Thanks, David
Mykola Ostapchuk wrote:
Well, you don't have to use session scope and you can clear Collection in reset() method.
registration.jsp:
<logic:iterate id="item" name="allRoles"> <html:multibox name="registrationForm" property="selectedRoles"> <bean:write name="item" property="value"/> </html:multibox> <bean:write name="item" property="label"/> </logic:iterate>
struts-config.xml:
<action path="/editUser" type="com.name.wos.struts.userAdm.EditRegistrationAction" name="registrationForm" scope="request" validate="false" parameter="editUser"> <forward name="success" path="/registration.jsp"/> </action>
registrationForm.java
public String[] getSelectedRoles() { return this.selectedRoles; } public void setSelectedRoles(String[] selectedRoles) { this.selectedRoles = selectedRoles; }
public void reset(ActionMapping mapping, HttpServletRequest request) { String [] arrUserRoles={}; this.setSelectedRoles(arrUserRoles); }
In registrationAction - just populate selectedRoles array with "checked" values from DB. Populate Vector allRoles with all user Roles and put it into context:
RolesVO curElement; RolesBD rolesBD = new RolesBD(); Enumeration tempAllRoles = rolesBD.selectAllRoles().elements(); Vector allRoles=new Vector(); while (tempAllRoles.hasMoreElements()) { curElement = (RolesVO)tempAllRoles.nextElement(); allRoles.addElement(new LabelValueBean(curElement.getRoleName(),curElement.getRoleId().toString())); } application.setAttribute("allRoles", allRoles);
----- Original Message ----- From: "David Chelimsky" <[EMAIL PROTECTED]>
To: "Struts Users Mailing List" <[EMAIL PROTECTED]>
Sent: Wednesday, June 18, 2003 1:58 PM
Subject: Re: Multibox persistence problem
ActionForm.I've only been able to make this work w/ session scope. Can you please post your code so I can see your solution? Thanks.
Mykola Ostapchuk wrote:
Thank you for help - I solved the problem. Actually, it works with "request" scope well, no need to use session. The problem was in my code - I didn't put Collection for multibox to the form bean, but to separate bean...
----- Original Message ----- From: "David Chelimsky" <[EMAIL PROTECTED]>
To: "Struts Users Mailing List" <[EMAIL PROTECTED]>
Sent: Wednesday, June 18, 2003 1:24 AM
Subject: Re: Multibox persistence problem
1. Make sure that you are overriding the reset() method in the
pre-populated2. In reset(), make sure you do NOT reset the value of the Collection that contains your multibox options, but make sure that you DO reset all other values besides your Collection. 3. set scope="session" as was suggested
The result is that your Collection gets set in your Action and left alone on validation failure. The other properties are handled per the quote you referenced below.
As for why it is that Struts doesn't repopulate the Collection for you
from the request, essentially it has no way of knowing that they exist
foras they are not in the request when you submit the form. Only the values you select are. This is not true of text inputs because they return empty strings, but are still present in the request. I imagine something could be added to Struts that would add a bunch of hidden fields to the form in your .jsp that could somehow describe the type of the members of the Collection, and then rebuild the collection on the fly based on those fields. Perhaps this would make more sense after java 1.5 is released with support for typed Collections.
David
Mykola Ostapchuk wrote:
Doesn't work with session scope too.
"As we know, Struts redirects to the path set in the "input" attribute
the action if there are errors present in ActionError object.
The ActionForm object holding the user's data will still be in request.
Thus, any data entered by the user in the form will appear
multibox -in
the form."
All the data in <html:text..> tags is pre-populated well. But
"Mykolanot... Any suggestions?
----- Original Message ----- From: "Richard Raquepo" <[EMAIL PROTECTED]>
To: "Struts Users Mailing List" <[EMAIL PROTECTED]>;
validationOstapchuk" <[EMAIL PROTECTED]> Sent: Tuesday, June 17, 2003 11:15 PM Subject: Re: Multibox persistence problem
try setting scope="session" in your action. HTH ----- Original Message ----- From: "Mykola Ostapchuk" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Wednesday, June 18, 2003 10:35 AM Subject: Multibox persistence problem
Hi,
I'm using multibox to display multiple checkboxes:
<font size=2><pre> <logic:iterate id="item" name="allRoles"> <html:multibox name="requestUser" property="selectedRoles"> <bean:write name="item" property="value"/> </html:multibox> <bean:write name="item" property="label"/> </logic:iterate> </pre></font>
Everything works fine, the only problem is - when there's a
allerror
on my form and it's reposted with error messages, it always return
checkboxes unchecked (even if I check some of them before).
How could I keep checkbox values in this situation?
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]