struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From John Devine <johnjdev...@comcast.net>
Subject RE: Accepting arrays as values in mapped-backed ActionForms
Date Thu, 06 Mar 2003 05:12:15 GMT
Sometimes the promise (or threat) of someone looking over your shoulder
is help enough :) I might not have figured it out otherwise. 

Thanks for the interest anyway.

JD

-----Original Message-----
From: James Mitchell [mailto:jmitchell@apache.org] 
Sent: Wednesday, March 05, 2003 6:12 PM
To: 'Struts Users Mailing List'
Subject: RE: Accepting arrays as values in mapped-backed ActionForms

Wow, I'm glad I could help ;D


--
James Mitchell
Web Developer/Struts Evangelist
http://jakarta.apache.org/struts/

"People demand freedom of speech to make up for the freedom of thought
which they avoid."
    - Soren Aabye Kierkegaard (1813-1855)




> -----Original Message-----
> From: John Devine [mailto:johnjdevine@comcast.net] 
> Sent: Wednesday, March 05, 2003 3:34 PM
> To: 'Struts Users Mailing List'
> Subject: RE: Accepting arrays as values in mapped-backed ActionForms
> 
> 
> Solved:
> 
> On the form bean I now include:
> 
>    public String[] getExGroups(String key){
>       return (String[]) existingGroups.get(key);
>    }
> 
>    public void setExGroups(String key, String[] values){
>       existingGroups.put(key,values);
>    }
> 
> and use exGroups(primaryKey) as the multibox property.
> 
> I had tried something similar earlier but I had 
> 
>    public Object getExGroups(String key){
>       return existingGroups.get(key);
>    }
> 
>    public void setExGroups(String key, Object values){
>       existingGroups.put(key,values);
>    }
> 
> which I had seen in another example and that accepted only the first
> input from each of the rows of checkboxes as a String and ignored the
> others.
> 
> If you have similar examples that can do the job more elegantly (or
> differently even), I'd love to see them. Ideas can only help.
> 
> 
> -- John
> 
> 
> 
> -----Original Message-----
> From: John Devine [mailto:johnjdevine@comcast.net] 
> Sent: Wednesday, March 05, 2003 2:10 PM
> To: 'Struts Users Mailing List'
> Subject: RE: Accepting arrays as values in mapped-backed ActionForms
> 
> Okay, yes the actual business process is not very well explained.
> Probably I should have used generic object names, but since it's
> started:
> 
> I have a bunch of "story" objects.
> Each story object can belong to 0 or more groups.
> 
> The functionality of this page is to show the user which groups their
> stories belong to as well as to change the groups to which each story
> belongs.
> 
> So the user can page through the list of her stories 
> (generated through
> the search bean, which is actually an attribute on the ActionForm Bean
> (submitToGroupForm)). For each list of 10 stories, the 
> submitToGroupForm
> sets up a map called "existingGroups" which contains a String array of
> the group id's associated with each story. 
> 
> "availableGroups" is an array of String group id's put into
> actionFormBean which contains all the groups the user has 
> permission to
> access.
> 
> So, in addition to the regular info on each story (title, id, plus the
> tile "storyDetailswithBlurb.jsp"), the generated page is a matrix of
> checkboxes:
> One row of "availableGroups" checkboxes for each story.
> 
> The idea was to use the map on the actionForm to receive changes to
> groups, with the key of the map being the storyId, and the value being
> the array of groups Id's that were checked off for each story. Then my
> Action will pass that info off to a bean that will do the 
> reassignment.
> 
> 
> 
> 
> 
> 
> 
> -----Original Message-----
> From: James Mitchell [mailto:jmitchell@apache.org] 
> Sent: Wednesday, March 05, 2003 4:22 AM
> To: 'Struts Users Mailing List'
> Subject: RE: Accepting arrays as values in mapped-backed ActionForms
> 
> Ok, I've had time to look over your notes.
> 
> I may be missing some pieces to the puzzle here.
> 
> If I understand you correctly, you've got a bean (searchBean) 
> that has a
> List of Story beans, each with id and title.
> 
> You have a formbean (submitToGroupForm) that returns a Map of Groups
> (getExistingGroups) keyed off of the id from an iteration of the first
> bean (searchBean).
> 
> Is this correct so far?
> Which bean is the form associated with this action? (I am assuming
> submitToGroupForm)
> Why do you iterate over the formbean, then iterate over a 
> field on that
> bean?
> 
> Can you post more details on what you are wanting to accomplish here?
> 
> 
> 
> --
> James Mitchell
> Web Developer/Struts Evangelist
> http://jakarta.apache.org/struts/
> 
> "People demand freedom of speech to make up for the freedom of thought
> which they avoid."
>     - Soren Aabye Kierkegaard (1813-1855)
> 
> 
> 
> 
> > -----Original Message-----
> > From: James Mitchell [mailto:jmitchell@apache.org] 
> > Sent: Tuesday, March 04, 2003 6:38 PM
> > To: 'Struts Users Mailing List'
> > Subject: RE: Accepting arrays as values in mapped-backed ActionForms
> > 
> > 
> > John, sorry for not getting back sooner.  I've been in 
> meetings since
> > lunch.  I'll see what I can work up tonight.
> > 
> > 
> > --
> > James Mitchell
> > Web Developer/Struts Evangelist
> > http://jakarta.apache.org/struts/
> > 
> > "People demand freedom of speech to make up for the freedom 
> of thought
> > which they avoid."
> >     - Soren Aabye Kierkegaard (1813-1855)
> > 
> > 
> > 
> > 
> > > -----Original Message-----
> > > From: John Devine [mailto:johnjdevine@comcast.net] 
> > > Sent: Tuesday, March 04, 2003 2:41 PM
> > > To: 'Struts Users Mailing List'
> > > Subject: RE: Accepting arrays as values in mapped-backed 
> ActionForms
> > > 
> > > 
> > > Sure I'd love to see an example!
> > > 
> > > But like I said, I ended up using the scriptlets for 
> > iteration because
> > > within the iteration of "storyList" I call a tile like so:
> > > 
> > >   <td>
> > > <tile:insert 
> > page="/WEB-INF/tilestemplates/storyDetailwithBlurb.jsp" >
> > >  <tile:put name="story" beanName="story" />
> > >  <tile:put name="counter" beanName="counter" />
> > > </tile:insert>
> > >   </td>
> > > 
> > > and I couldn't get the tile to be called properly when it was 
> > > within an
> > > <logic:iterate> tag. (and I haven't boned up on the nested 
> > tags enough
> > > to be comfortable with them yet).
> > > 
> > > If you have an example of naming the property of the multibox 
> > > to accept
> > > a set of options for each story in the iteration, that's 
> > where my real
> > > problem lies right now. The way I have it now works fine for 
> > > <html:text>
> > > and single parameter inputs, but I can't get it to work 
> for multiple
> > > parameter inputs.
> > > 
> > > Thanks,
> > > 
> > > John
> > > 
> > > 
> > > -----Original Message-----
> > > From: James Mitchell [mailto:jmitchell@apache.org] 
> > > Sent: Tuesday, March 04, 2003 1:28 PM
> > > To: 'Struts Users Mailing List'
> > > Subject: RE: Accepting arrays as values in mapped-backed 
> ActionForms
> > > 
> > > You can accomplish all of this with tags and elimate your 
> > scriptlets.
> > > 
> > > I have something close to that, let me know if you want 
> an example.
> > > 
> > > 
> > > --
> > > James Mitchell
> > > Web Developer/Struts Evangelist
> > > http://jakarta.apache.org/struts/
> > > 
> > > "People demand freedom of speech to make up for the freedom 
> > of thought
> > > which they avoid."
> > >     - Soren Aabye Kierkegaard (1813-1855)
> > > 
> > > 
> > > 
> > > 
> > > > -----Original Message-----
> > > > From: John Devine [mailto:johnjdevine@comcast.net] 
> > > > Sent: Tuesday, March 04, 2003 1:52 PM
> > > > To: 'Struts Users Mailing List'
> > > > Subject: RE: Accepting arrays as values in mapped-backed 
> > ActionForms
> > > > 
> > > > 
> > > > Hello Struts community!
> > > > 
> > > > No one's picked up on this thread and I just wonder 
> whether it's a
> > > > stupid or unclear question or whether it's just not of 
> interest. 
> > > > 
> > > > If the question's been answered before, could someone let 
> > > me know and
> > > > I'll go back to searching lists. I didn't find any 
> > answers earlier.
> > > > 
> > > > Basically what I'm trying to is set up a form that will 
> > > > contain a Map of
> > > > String arrays. At this point, when Struts populates the Map, 
> > > > it assumes
> > > > the map elements will be plain strings. Does anyone know 
> > of a way to
> > > > tell it that the members of the map should be populated 
> as arrays
> > > > (because multiple request parameters will have the same name).
> > > > 
> > > > Thanks in advance for any response,
> > > > 
> > > > John Devine
> > > > 
> > > > 
> > > > 
> > > > 
> > > > -----Original Message-----
> > > > From: John Devine [mailto:johnjdevine@comcast.net] 
> > > > Sent: Monday, March 03, 2003 5:10 PM
> > > > To: struts-user@jakarta.apache.org
> > > > Subject: Accepting arrays as values in mapped-backed ActionForms
> > > > 
> > > > Does anyone know how to specify that the value of the 
> HashMap in a
> > > > mapped-backed ActionForm should be an array of Strings rather 
> > > > than just
> > > > a single String?
> > > > 
> > > > I'm having a problem in trying to set up a page of 
> several rows of
> > > > indexed multi-boxes:
> > > > 
> > > > I have a regular action form that includes:
> > > > 
> > > >    public Map existingGroups = new HashMap();
> > > > 
> > > >    public Map getExistingGroups(){
> > > >       return existingGroups;
> > > >    }
> > > > 
> > > >    public void setExistingGroups(Map map){
> > > >       this.existingGroups = map;
> > > >    }
> > > > 
> > > > On my JSP, I include several different rows of multiboxes, 
> > > and I want
> > > > the user to be able to choose different groups for each object:
> > > > 
> > > > <%
> > > > List storyList = searchBean.getList();
> > > > int counter = 1; 
> > > > for (Iterator i = storyList.iterator(); i.hasNext(); 
> > counter++ ) { 
> > > >    Story story = (Story)i.next(); 
> > > >    pageContext.setAttribute("story", story); 
> > > >    pageContext.setAttribute("counter", new Integer(counter)); 
> > > > %>
> > > > 
> > > > <tr>
> > > >   <td>
> > > >    <bean:write name="story" property="title" />
> > > >   </td>
> > > > <logic:iterate id="group" name="submitToGroupForm"
> > > > property="availableGroups" type="com.rd.Group" >
> > > >   <td>
> > > >    <html:multibox 
> > > > property='<%="existingGroups("+story.getId()+")"%>'  >
> > > >     <bean:write name="group" property="id" />
> > > >    </html:multibox>
> > > >     <bean:write name="group" property="name" />
> > > >   </td>
> > > > </logic:iterate>
> > > > </tr>
> > > > 
> > > > <% } %>
> > > > 
> > > > (Oh, and I use the scriptlet iteration because there's a 
> > tile being
> > > > called within that loop that I edited out for readability.)
> > > > 
> > > > What happens is that value of "existingGroups(primaryKey1)" 
> > > > is a String
> > > > instead of an array of Strings. So that if I try to cast it 
> > > > to String[],
> > > > I get a ClassCastException.
> > > > 
> > > > Is this a limitation of using maps in forms, or is there a 
> > > > way to return
> > > > arrays of strings as entries of the Map on your ActionForm?
> > > > 
> > > > Thanks,
> > > > 
> > > > John
> > > > 
> > > > 
> > > > 
> > > 
> > 
> ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: 
> struts-user-unsubscribe@jakarta.apache.org
> > > > For additional commands, e-mail: 
> > struts-user-help@jakarta.apache.org
> > > > 
> > > > 
> > > > 
> > > 
> > 
> ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: 
> struts-user-unsubscribe@jakarta.apache.org
> > > > For additional commands, e-mail: 
> > struts-user-help@jakarta.apache.org
> > > > 
> > > 
> > > 
> > > 
> > 
> ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
> > > For additional commands, e-mail: 
> struts-user-help@jakarta.apache.org
> > > 
> > > 
> > > 
> > 
> ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
> > > For additional commands, e-mail: 
> struts-user-help@jakarta.apache.org
> > > 
> > 
> > 
> > 
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: struts-user-help@jakarta.apache.org
> > 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: struts-user-help@jakarta.apache.org
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: struts-user-help@jakarta.apache.org
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: struts-user-help@jakarta.apache.org
> 


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


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


Mime
View raw message