You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Bart Busschots <ba...@so-4pt.net> on 2006/08/01 21:26:54 UTC

Re: OK ... I'm almost there ..... just not quite yet [resolved]

In case anyone else comes across this thread in the future and was 
wondering what the solution was, it is just a very small change in the 
JSP code. The correct code reads:

  <ul class="form_element_list">
   <jsp:useBean id="createStudentGroupForm" scope="session" 
type="org.apache.struts.validator.DynaValidatorForm" />
   <logic:iterate id="student" name="createStudentGroupForm" 
property="studentNames" indexId="i">
    <li><html:text property="studentNames[${i}]" /></li>
   </logic:iterate>
  </ul>

Now, if I can get validator beaten into shape I have a working 'clean' 
solution to my problem rather than a nasty hack so it's been a 
productive afternoon! Cheers for the various replies this afternoon .... 
they really helped steer me in the right direction.

Bart.

Bart Busschots wrote:
> OK ... I have a simple two-step for for allowing a user of our system 
> (a teacher) to create a group of students in our system. The first 
> step asks the teacher to enter some basic information about the group 
> as a whole, specifically, the name, the group type (a dropdown), a 
> group description (a text area) and the number of students in the 
> group. The second step then asks the teacher to enter the names of all 
> the students. The obvious thing to note is that the number of text 
> areas on the second page is dynamic. So, after some messing around I 
> decided to store that information as a list of Strings in the form 
> bean so my form looks like this in strutsconfig:
>
> <form-bean name="createStudentGroupForm" 
> type="org.apache.struts.validator.DynaValidatorForm">
>   <form-property name="groupName" type="java.lang.String" />
>   <form-property name="noStudents" type="java.lang.String" />
>   <form-property name="groupType" type="java.lang.String" />
>   <form-property name="wikiText" type="java.lang.String" />
>   *<form-property name="studentNames" type="java.lang.String[]" />*
>  </form-bean>
>
> The first form submits to an action that populates the studentNames 
> field like so:
>
>    //get the dynamic form
>    DynaValidatorForm theForm = (DynaValidatorForm)form;
>
>    //get the details from the form
>    String groupType = (String)theForm.get("groupType");
>    int numStudents = 
> Integer.parseInt(((String)theForm.get("noStudents")));
>
>    //prepare the list of default student names
>    String students[] = new String[numStudents];
>    for(int i = 0; i < numStudents; i++) {
>      students[i] = "Student " + (i + 1);
>    }
>
>    //insert into the form
>    theForm.set("studentNames", students);
>
> I then try to render the text areas in my JSP like so:
>
>
>  <html:form action="/mentor/createNamedStudentGroup" 
> styleClass="vtie_form" onsubmit="encodeNames()">
>
>  <ul class="form_element_list">
>   <jsp:useBean id="createStudentGroupForm" scope="session" 
> type="org.apache.struts.validator.DynaValidatorForm" />
>   <logic:iterate id="student" name="createStudentGroupForm" 
> property="studentNames">
>    <li><html:text property="studentNames" indexed="true" /></li>
>   </logic:iterate>
>  </ul>
>
> I do get out 5 text areas as you would expect but the values are 
> messed up. Here is the source generated:
>
> <li><input type="text" 
> name="org.apache.struts.taglib.html.BEAN[0].studentNames" 
> value="[Ljava.lang.String;@1a175b" /></li>
> <li><input type="text" 
> name="org.apache.struts.taglib.html.BEAN[1].studentNames" 
> value="[Ljava.lang.String;@1a175b" /></li>
> <li><input type="text" 
> name="org.apache.struts.taglib.html.BEAN[2].studentNames" 
> value="[Ljava.lang.String;@1a175b" /></li>
> <li><input type="text" 
> name="org.apache.struts.taglib.html.BEAN[3].studentNames" 
> value="[Ljava.lang.String;@1a175b" /></li>
> <li><input type="text" 
> name="org.apache.struts.taglib.html.BEAN[4].studentNames" 
> value="[Ljava.lang.String;@1a175b" /></li>
>
> As you can see I seem to be getting close to what I want but I'm not 
> there just yet :(
>
> Any pointers of where I've gone wrong would be greatly appreciated.
>
> Thanks,
>
> Bart.
>
> ---------------------------------------------------------------------
> 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