You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by "Struts Newsgroup (@Basebeans.com)" <st...@basebeans.com> on 2002/03/27 18:25:01 UTC

dynamic alteration of multiple entry select box content with javascript : empty values upon submission

Subject: dynamic alteration of multiple entry select box content with javascript : empty values upon submission
From: Simon Kirk <si...@perceptionbe.com>
 ===
Hello.

I have an html page with two select boxes configured to allow multiple 
selection in each. The one on the left contains options that are available, 
the one on the right contains options that are selected from those 
available. I've got a javascript method suite that will transfer selected 
options from the box on the left to the box on the right dynamically. I 
know it works with normal html form submission as I've used it many times 
in the past. Now however I'm trying to get it to work with struts.

The first problem I came across was populating the select boxes. Not 
normally a problem, but the form bean I had configured to accept the data 
from the html page complained about various problems. Finally I got this 
nailed. Here's an example of the html:

<table cellspacing="0" cellpadding="0" border="0">
<tr>
  <td align="center">Available options</td>
  <td align="center">&nbsp;</td>
  <td align="center">Selected options/td>
</tr>
<tr>
  <td align="center">
    <html:select property="allOptions" size="5" multiple="multiple">
      <html:options collection="options" property="value" 
labelProperty="label"/>
    </html:select>
  </td>
  <td align="center">
    <input type="button" name="addoption" value=" >> " 
onclick="moveSelectedOptions('fooForm','allOptions','selectedOptions')">
    <br><br>
    <input type="button" name="deloption" value=" << " 
onclick="moveSelectedOptions('fooForm','selectedOptions','allOptions')">
  </td>
  <td align="center">
    <html:select property="selectedOptions" size="5" multiple="multiple">
      <html:options property="options" labelProperty="optionLabels"/>
    </html:select>
  </td>
  </tr>
</table>

(please excuse any shonky indentation :)

I won't paste the javascript functions up here as they're pretty long 
winded.

The top select box gets its options from a bean containing a collection of 
LabelValue beans. The bottom select box gets it options from a collection 
contained in the form bean, which is populated from the database with an 
Action before the form is rendered.

Now, if you click one of the two buttons labelled >> or << the options move 
across into the relative box as expected. But when I submit the form I am 
getting nothing at all in the form bean for either the property 
"allOptions" or "selectedOptions". Nothing at all, not a null value, just 
nothing. This is independant of the type that you set that field to in the 
form bean class you make - struts isn't doing anything clever like turning 
the multiple selection into a Vector on the fly for you.

The selected options should come through as a comma seperated list of IDs.


If anybody has any idea where to go I would be very helpful, as reading 
through the mailing list archive and checking google hasn't really given me 
any useful information. Is there anywhere I can check every value being 
gleaned out of the form by the controller servlet? Printing the query 
string out in the action class that the html page forwards off to doesn't 
help, it's empty too.

Regards,
Simon

-- 
Simon Kirk
perception|be.developer(java)
t. +44 (0) 20 7689 1200

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>