struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Justin Chin <jus...@justinchin.com>
Subject Re: struts-tags Iterator usage
Date Wed, 25 Jul 2012 20:56:16 GMT
Apologies.  I understand now that text only is allowed.

I am not sure I understand.  The jsp does the job of displaying the data 
correctly, but I must do additional work to submit the data by adding 
additional markup?:

         <s:form action="method2test">
             <s:iterator value="peopleList">
                 <tr>
                     <td><s:property value="firstname" /></td>
                     <td><s:property value="lastname" /></td>
                     <td><s:property value="number" /></td>
                     <s:hidden value="dn"/>
                 </tr>
             </s:iterator>
             <s:submit/>
         </s:form>

Thanks.

On 7/25/2012 4:37 PM, Dave Newton wrote:
> Totally illegible.
>
> In any case, if you want to "submit a list", you need to name your form
> fields using array notation, or at the very least, using object.property
> notation, e.g., peopleList.firstName.
>
> Otherwise you just have a bunch of fields named "firstName"--at best you'd
> get separate lists of names and numbers.
>
> Dave
>
> On Wed, Jul 25, 2012 at 4:33 PM, Justin Chin <justin@justinchin.com> wrote:
>
>> I am trying to update a List of Person Objects via jsp.  I have one Action
>> Class used in the DispatchAction pattern.
>>
>> I begin the exercise with method1 which creates a new peopleList and
>> populates each Person object in the list with a firstname.
>>
>> *public*String method1() *throws*Exception {
>>
>> System./out/.println("Just Called method1 method");
>>
>> peopleList= *new*ArrayList<Person>();
>>
>> *for*(*int*i = 0; i < 10; i++) {
>>
>> Person thisOne = *new*Person();
>>
>> thisOne.setFirstname("**FirstName"+ i);
>>
>> peopleList.add(thisOne);
>>
>> }
>>
>> *return*/SUCCESS/;
>>
>> }
>>
>>
>> I direct to JSP1.jsp and it displays fine:
>>
>> <%@page language=/"java"/ contentType=/"text/html; charset=UTF-8"/
>> pageEncoding=/"UTF-8"/%>
>>
>> <%@taglib prefix=/"s"/ uri=/"/struts-tags"/%>
>>
>> <html>
>>
>> <head>
>>
>> <title>JSP1</title>
>>
>> </head>
>>
>> <body>
>>
>> <tableborder=/"1"/ "width=/"100%"/>
>>
>> <tr>
>>
>> <td>_firstname_</td>
>>
>> <td>_lastname_</td>
>>
>> <td>number</td>
>>
>> </tr>
>>
>> <tr>
>>
>> <s:formaction=/"method2test"/>
>>
>> <s:iteratorvalue=/"peopleList"**/>
>>
>> <tr>
>>
>> <td><s:propertyvalue=/"**firstname"/ /></td>
>>
>> <td><s:propertyvalue=/"**lastname"/ /></td>
>>
>> <td><s:propertyvalue=/"number"**/ /></td>
>>
>> <s:hiddenvalue=/"dn"//>
>>
>> </tr>
>>
>> </s:iterator>
>>
>> <s:submit/>
>>
>> </s:form>
>>
>> </tr>
>>
>> </table>
>>
>> </body>
>>
>> </html>
>>
>> I submit from this JSP1.jsp and call method2.  Here peopleList is now
>> empty. _Why doesn't JSP2.jsp submit peopleList to method2?_
>>
>>
>>
>> Below are some of the important code snippets I believe are needed to help
>> resolve my misunderstanding.
>>
>> struts.xml below:
>>
>> <?xmlversion=/"1.0"/ encoding=/"UTF-8"/ ?>
>>
>> <!DOCTYPEstruts PUBLIC
>>
>> "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
>>
>> "http://struts.apache.org/**dtds/struts-2.3.dtd<http://struts.apache.org/dtds/struts-2.3.dtd>
>> ">
>>
>> <struts>
>>
>> <constantname=/"struts.enable.**DynamicMethodInvocation"/ value=/"false"/
>> />
>>
>> <constantname=/"struts.**devMode"/ value=/"false"/ />
>>
>> <constantname=/"struts.ui.**theme"/ value=/"simple"/ />
>>
>> <packagename=/"default"/ namespace=/"/"/ extends=/"struts-default"/>
>>
>> <default-action-refname=/"**index"/ />
>>
>> <global-results>
>>
>> <resultname=/"error"/>/error._**jsp_</result>
>>
>> </global-results>
>>
>> <global-exception-mappings>
>>
>> <exception-mappingexception=/"**java.lang.Exception"/ result=/"error"//>
>>
>> </global-exception-mappings>
>>
>> <actionname=/"index"/>
>>
>> <resulttype=/"redirectAction"/**>
>>
>> <paramname=/"actionName"/>**method1test</param>
>>
>> <paramname=/"namespace"/>/**example</param>
>>
>> </result>
>>
>> </action>
>>
>> </package>
>>
>> <includefile=/"example.xml"//>
>>
>> <!-- Add packages here -->
>>
>> </struts>
>>
>>
>> example.xml below:
>>
>> <?xmlversion=/"1.0"/ encoding=/"UTF-8"/ ?>
>>
>> <!DOCTYPEstruts PUBLIC
>>
>> "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
>>
>> "http://struts.apache.org/**dtds/struts-2.0.dtd<http://struts.apache.org/dtds/struts-2.0.dtd>
>> ">
>>
>> <struts>
>>
>> <packagename=/"example"/ namespace=/"/"/ extends=/"default"/>
>>
>> <actionname=/"method1test"/ class=/"example.Action1"/ method=/"method1"/>
>>
>> <result>/example/JSP1._jsp_</**result>
>>
>> </action>
>>
>> <actionname=/"method2test"/ class=/"example.Action1"/**method=/"method2"/>
>>
>> <resultname=/"input"/>/**example/JSP1._jsp_</result>
>>
>> <result>/example/JSP2._jsp_</**result>
>>
>> </action>
>>
>> <actionname=/"method3test"/ class=/"example.Action1"/**method=/"method3"/>
>>
>> <resultname=/"input"/>/**example/JSP2._jsp_</result>
>>
>> <result>/example/JSP3._jsp_</**result>
>>
>> </action>
>>
>> </package>
>>
>> </struts>
>>
>> Action1.java
>>
>> *package*example;
>>
>> *import*java.util.ArrayList;
>>
>> *import*java.util.List;
>>
>> *import*com.opensymphony.**xwork2.ActionSupport;
>>
>> *public**class*Action1 *extends*ActionSupport {
>>
>> *private**static**final**long***/serialVersionUID/= -8528061245644461238L;
>>
>> *private*List<Person> peopleList;
>>
>> *public*List<Person> getPeopleList() {
>>
>> *return*peopleList;
>>
>> }
>>
>> *public**void*setPeopleList(**List<Person> peopleList) {
>>
>> *this*.peopleList= peopleList;
>>
>> }
>>
>> *public*String method1() *throws*Exception {
>>
>> System./out/.println("Just Called method1 method");
>>
>> peopleList= *new*ArrayList<Person>();
>>
>> *for*(*int*i = 0; i < 10; i++) {
>>
>> Person thisOne = *new*Person();
>>
>> thisOne.setFirstname("**FirstName"+ i);
>>
>> peopleList.add(thisOne);
>>
>> }
>>
>> *return*/SUCCESS/;
>>
>> }
>>
>> *public*String method2() *throws*Exception {
>>
>> System./out/.println("Just Called method2 method");
>>
>> System./out/.println("Is peopleList null?"+ peopleList== *null*);
>>
>> *if*(peopleList!= *null*) {
>>
>> List<Person> newPeopleList = *new*ArrayList<Person>();
>>
>> *for*(*int*i = 0; peopleList!= *null*&& i < peopleList.size(); i++) {
>>
>> Person thisOne = peopleList.get(i);
>>
>> thisOne.setLastname("LastName"**+ i);
>>
>> newPeopleList.add(thisOne);
>>
>> }
>>
>> peopleList.clear();
>>
>> peopleList.addAll(**newPeopleList);
>>
>> }
>>
>> *return*/SUCCESS/;
>>
>> }
>>
>> }
>>
>> Person.java:
>>
>> *package*example;
>>
>> *public**class*Person {
>>
>> String firstname, lastname, number, dn;
>>
>> *public*String getDn() {
>>
>> *return*dn;
>>
>> }
>>
>> *public**void*setDn(String dn) {
>>
>> *this*.dn= dn;
>>
>> }
>>
>> *public*String getFirstname() {
>>
>> *return*firstname;
>>
>> }
>>
>> *public**void*setFirstname(**String firstname) {
>>
>> *this*.firstname= firstname;
>>
>> }
>>
>> *public*String getLastname() {
>>
>> *return*lastname;
>>
>> }
>>
>> *public**void*setLastname(**String lastname) {
>>
>> *this*.lastname= lastname;
>>
>> }
>>
>> *public*String getNumber() {
>>
>> *return*number;
>>
>> }
>>
>> *public**void*setNumber(String number) {
>>
>> *this*.number= number;
>>
>> }
>>
>> }
>>
>>
>>
>> JSP1.jsp and JSP2.jsp are identical except for
>> <s:formaction=/"method2test"/>**, which simple calls method1test and
>> method2test respectively:
>>
>> <%@page language=/"java"/ contentType=/"text/html; charset=UTF-8"/
>> pageEncoding=/"UTF-8"/%>
>>
>> <%@taglib prefix=/"s"/ uri=/"/struts-tags"/%>
>>
>> <html>
>>
>> <head>
>>
>> <title>JSP1</title>
>>
>> </head>
>>
>> <body>
>>
>> <tableborder=/"1"/ "width=/"100%"/>
>>
>> <tr>
>>
>> <td>firstname</td>
>>
>> <td>lastname</td>
>>
>> <td>number</td>
>>
>> </tr>
>>
>> <tr>
>>
>> <s:formaction=/"method2test"/>
>>
>> <s:iteratorvalue=/"peopleList"**/>
>>
>> <tr>
>>
>> <td><s:propertyvalue=/"**firstname"/ /></td>
>>
>> <td><s:propertyvalue=/"**lastname"/ /></td>
>>
>> <td><s:propertyvalue=/"number"**/ /></td>
>>
>> <s:hiddenvalue=/"dn"//>
>>
>> </tr>
>>
>> </s:iterator>
>>
>> <s:submit/>
>>
>> </s:form>
>>
>> </tr>
>>
>> </table>
>>
>> </body>
>>
>> </html>
>>
>>
>>
>>
>>
>>
>>


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


Mime
View raw message