You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Andrew Bate <an...@serco.com> on 2004/03/01 16:52:02 UTC
[REPOST] Problem updating bean from multi-select box
Hi,
I posted this a week ago and didn't get a resolution - now I'm back on the
case I would appreciate a few ideas on what else I could try:-
Here's a bit more info (bean names etc sanitised to protect the innocent...)
The main FormBean:-
public class MyFormBean extends MyAncestorFormBean {
private MyBean myBean = null;
<snip getters/setters and other stuff>
}
The embedded bean:-
public class MyBean extends SomeOtherBean {
private Collection myCollection = null;
private Collection myCollectionListData = null;
<snip getters/setters and other stuff>
}
Relevant content of the JSP with the multi-select box:-
<html:select property="myBean.myCollection" multiple="true"
size="7">
<html:options name="myFormBean"
property="myBean.myCollectionListData"/>
</html:select>
Error log:-
DEBUG 2004-03-01 15:15:39,437 [worker2] intuser@SessionID0 -
org.apache.commons.beanutils.BeanUtils Target name = myCollection
DEBUG 2004-03-01 15:15:39,447 [worker2] intuser@SessionID0 -
org.apache.commons.beanutils.ConvertUtils Convert string 'Lalalalala' to
class 'java.util.Collection'
DEBUG 2004-03-01 15:15:39,447 [worker2] intuser@SessionID0 -
org.apache.commons.beanutils.ConvertUtils Using converter
org.apache.commons.beanutils.converters.StringConverter@3b1bc4
javax.servlet.ServletException: BeanUtils.populate
at
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1098)
at
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.j
ava:816)
at
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1420)
at
bss.athena.framework.controller.FrameworkServlet.process(FrameworkServlet.ja
va:149)
at
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:520)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:772)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
at
com.persistence.web.JMillConnection.run(JMillConnection.java:1172)
at com.persistence.web.JMillConnection.run(JMillConnection.java:292)
at
com.persistence.web.JMillThreadPool$WorkerThread.run(JMillThreadPool.java:96
)
Basically, I have a field on a page which is a multi-select box showing 7
items. The currently selected values are in "myCollection", the available
values are in "myCollectionListData". The HTML <SELECT> displays fine with
all the options but when I submit the page, and Struts (more specifically
Jakarta Commons), tries to put the data back into the form bean, it blows up
with the error above.
Am I missing something or will the above just never work? If I'm barking up
the wrong tree can anyone suggest an alternative approach?
Thanks,
Andrew
> -----Original Message-----
> From: Andrew Bate
> Sent: 23 February 2004 10:47
> To: 'struts-user@jakarta.apache.org'
> Subject: Problem updating bean from multi-select box
>
> Hi,
>
> I am having a problem with the internals of BeanUtils/RequestUtils when my
> posting changes of a form to an action where the page contains a
> multi-select box. Can anyone spot what I am doing wrong from the code
> snippets below..?
>
> [MyBean] (inside the Form Bean)
> public void setMyFieldList(Collection myFieldList) (list
> containing the options to choose from)
> public Collection getMyFieldList()
> public void setMyField (Collection myField) (the field in
> question, multi-option)
> public Collection getMyField()
>
> [JSP]
> <html:select property="myBean.myField" multiple="true" size="7">
> <html:options name="myFormBean"
> property="myBean.myFieldList"/>
> </html:select>
>
> The page renders fine and automatically selects the right items in the
> list but when the page is updated things blow up trying to update the data
> back into the bean inside RequestUtils.
>
> Do I need to do anything else to tell the posted data to go back into the
> main field (which is a collection)?
>
> Thanks,
>
> Andrew
> --
> Andrew Bate
> Serco Justice
> Direct Line: (01452) 880433
> Email: andrew.bate@serco.com
>
>
This e-mail and any attachments may contain confidential and/or privileged
material; it is for the intended addressee(s) only. If you are not a named
addressee, you must not use, retain or disclose such information.
Serco cannot guarantee that the e-mail or any attachments are free from
viruses.
The views expressed in this e-mail are those of the originator and do not
necessarily represent the views of Serco.
Nothing in this e-mail shall bind Serco in any contract or obligation.
Serco Group plc. Registered in England and Wales. No: 2048608
Registered Office: Serco House, 16 Bartley Wood Business Park, Bartley Way,
Hook, Hampshire, RG27 9UY, United Kingdom.
---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-user-help@jakarta.apache.org