You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by "Tom Holmes Jr." <to...@tomholmes.net> on 2008/03/27 16:37:24 UTC

Another select-option question

I've created numerous pages with multiple combo-dropdown boxes that 
captured the label and value of a select box.
The formbean for these was always clear cut and simple.

Now, I have a select like the following:
<select name="test" multiple="true">
    <option value="selection a">A</option>
    <option value="selection b">B</option>
    <option value="selection c">C</option>
</select>
As I understand it, when I submit, this will submit back a string array 
(String[] test) which is defined in my form bean ... right?

Now lets say I have the following single select
<select name="test">
    <option value="selection a">A</option>
    <option value="selection b">B</option>
    <option value="selection c">C</option>
</select>
<select name="test">
    <option value="selection d">D</option>
    <option value="selection e">E</option>
    <option value="selection f">F</option>
</select>
So now there are two with the same name ... I am guessing that I will 
still get back a string array (String[] test) which is defined in my 
form bean ... right?

What I'd really like is a little different.  
I'd like the first selection test to be test[0] = A,B, or C (since it is 
single select) AND
I'd like the second selection test to be test[1] = D,E, or F (since it 
is single select)
Or even better yet:
I'd like the first selection test to be test["first_letter"] = A,B, or C 
(since it is single select) AND
I'd like the second selection test to be test["second_letter"] = D,E, or 
F (since it is single select)

So, how would I setup the form bean for this?
The way it is setup now, I have a Collection for test, and it comes back 
with an argument type mismatch.

Any help would be much appreciated, and I will keep working on this. 

Thanks!
                                         Tom


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: Another select-option question

Posted by "Tom Holmes Jr." <to...@tomholmes.net>.
Laurie Harper wrote:
> Tom Holmes Jr. wrote:
>> I've created numerous pages with multiple combo-dropdown boxes that 
>> captured the label and value of a select box.
>> The formbean for these was always clear cut and simple.
>>
>> Now, I have a select like the following:
>> <select name="test" multiple="true">
>>    <option value="selection a">A</option>
>>    <option value="selection b">B</option>
>>    <option value="selection c">C</option>
>> </select>
>> As I understand it, when I submit, this will submit back a string 
>> array (String[] test) which is defined in my form bean ... right?
>>
>> Now lets say I have the following single select
>> <select name="test">
>>    <option value="selection a">A</option>
>>    <option value="selection b">B</option>
>>    <option value="selection c">C</option>
>> </select>
>> <select name="test">
>>    <option value="selection d">D</option>
>>    <option value="selection e">E</option>
>>    <option value="selection f">F</option>
>> </select>
>> So now there are two with the same name ... I am guessing that I will 
>> still get back a string array (String[] test) which is defined in my 
>> form bean ... right?
>>
>> What I'd really like is a little different.  I'd like the first 
>> selection test to be test[0] = A,B, or C (since it is single select) AND
>> I'd like the second selection test to be test[1] = D,E, or F (since 
>> it is single select)
>> Or even better yet:
>> I'd like the first selection test to be test["first_letter"] = A,B, 
>> or C (since it is single select) AND
>> I'd like the second selection test to be test["second_letter"] = D,E, 
>> or F (since it is single select)
>>
>> So, how would I setup the form bean for this?
>> The way it is setup now, I have a Collection for test, and it comes 
>> back with an argument type mismatch.
>>
>> Any help would be much appreciated, and I will keep working on this.
>> Thanks!
>
> You're on the right lines; you need a Map rather than a Collection if 
> you want key indexing. Your select's name would be test["a"] for the 
> first, test["b"] for the second, etc.
>
> L.
>
Laurie, thanks for thelp, but can you be of more help .... I'm been 
working for the last two days, and I am close, but not that close ...
I did have my formBean set with HashMap loaded with data which I think 
is right.

I am going through an iteration loop and that buils my labels which is 
just text ... so label_a, label_b, label_c etc.
Headers contains all my labels that I want on the page. (abel_a, 
label_b, label_c etc.)
<logic:iterate id="header" name="myFormBean" property="headers">
My labels are being written out with:  <bean:write name="header">
This works all good.

Within that loop I have an <html:select name="myFormBean" 
property="mapping"  indexed='<bean:write name="header'>">
And when I look at the page, I do see <select name="mapping"> so I am 
not sure if this is truly being indexed the way I want.

So now I have a Collection/ArrayList of LabelValueBeans ... this 
collection is used to populate the drop-down box,
and with:   <html:optionsCollection name="properties" />    this works 
great.  And "properties" is a property within the form bean.

The problem again is that for the first select box: label_a: 
mapping["a"] = single selection for combo-box a
and the second select box: label_b: mapping["b"] = single selection for 
combo-box b

if I have explained this correctly, I know I have seen how a single 
select can be created so we populate a combo-box and even get the 
selected for it.
And now I have multiple select boxes indexed with a name (same name as 
the label/header) and I want to get the single "selected." within the 
combo-box.
So, how I define that structure within my form bean is important, then I 
can populate that structure in my pre-action class ...
And then when I submit it ... I don't want to get an 
argument-type-mismatch within the beanutils.populate when I submit the 
JSP page.

Thanks again for the help.   I will keep working on this also.  

                                                                                                              
Tom

>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: Another select-option question

Posted by Laurie Harper <la...@holoweb.net>.
Tom Holmes Jr. wrote:
> I've created numerous pages with multiple combo-dropdown boxes that 
> captured the label and value of a select box.
> The formbean for these was always clear cut and simple.
> 
> Now, I have a select like the following:
> <select name="test" multiple="true">
>    <option value="selection a">A</option>
>    <option value="selection b">B</option>
>    <option value="selection c">C</option>
> </select>
> As I understand it, when I submit, this will submit back a string array 
> (String[] test) which is defined in my form bean ... right?
> 
> Now lets say I have the following single select
> <select name="test">
>    <option value="selection a">A</option>
>    <option value="selection b">B</option>
>    <option value="selection c">C</option>
> </select>
> <select name="test">
>    <option value="selection d">D</option>
>    <option value="selection e">E</option>
>    <option value="selection f">F</option>
> </select>
> So now there are two with the same name ... I am guessing that I will 
> still get back a string array (String[] test) which is defined in my 
> form bean ... right?
> 
> What I'd really like is a little different.  I'd like the first 
> selection test to be test[0] = A,B, or C (since it is single select) AND
> I'd like the second selection test to be test[1] = D,E, or F (since it 
> is single select)
> Or even better yet:
> I'd like the first selection test to be test["first_letter"] = A,B, or C 
> (since it is single select) AND
> I'd like the second selection test to be test["second_letter"] = D,E, or 
> F (since it is single select)
> 
> So, how would I setup the form bean for this?
> The way it is setup now, I have a Collection for test, and it comes back 
> with an argument type mismatch.
> 
> Any help would be much appreciated, and I will keep working on this.
> Thanks!

You're on the right lines; you need a Map rather than a Collection if 
you want key indexing. Your select's name would be test["a"] for the 
first, test["b"] for the second, etc.

L.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org