Perhaps you could post your full template and class.  I don't see a submit
component so I question what else has been omitted.

Jonathan

> -----Original Message-----
> From: Andy Pahne [mailto:[EMAIL PROTECTED]
> Sent: Thursday, October 23, 2008 11:15
> To: Tapestry users
> Subject: [T5] editing a looped list of objects' properties in a form
> 
> 
> I am trying to edit the properties of objects contained in a list by
> using a loop in a form component. But it does not work, because the
> objects in the list are not updated.
> 
> 
> 
> The list of passengers:
> 
>      @Property @Persist
>      private List<Passenger> passengers;
> 
> 
> This list is initialized like this:
> 
>      @BeforeRenderTemplate
>      public void initialize() {
>          int passengersTotal = getQuery().getPassengersTotal();
>          if(passengers == null) {
>              passengers = new ArrayList<Passenger>(passengersTotal);
>              for (int i = 0; i < passengersTotal; i++) {
>                  passengers.add(new Passenger());
>              }
>          }
>      }
> 
> 
> 
> I try to buid a form in order to edit the passengers like this:
> 
> 
>      <form t:type="Form"
>            t:id="search_accommodation"
>            t:clientValidation="false"
>            t:autofocus="false">
>           <t:loop source="passengers" value="passenger">
>                   <fieldset class="column first">
>                      <legend>${message:firstName-label}</legend>
>                      <input type="text"
>                             t:type="TextField"
>                             t:value="passenger.firstName"
>                             t:validate="required,minLength=2"
>                             t:id="firstName"/>
>                  </fieldset>
>           </t:loop>
>      </form>
> 
> 
> 
> 
> Unfortunatly, after a successful submit, the firstName property is not
> set for any of the passengers contained in that list. I veryify that by
> the following logging statements:
> 
> 
>      public void onSuccess() {
>          int passengersTotal = getSearchOptions().getPassengersTotal();
>          for (int i = 0; i < passengersTotal; i++) {
>              System.out.println("Passenger '"+i+"'" + ": " +
>                  passengers.get(i).getFirstName());
>          }
>      }
> 
> 
> which always produces the output:
> 
>     Passenger '0': null
>     Passenger '1': null
> 
> 
> I thought that this would be the way to go, but I must be wrong somehow.
> Could anybody tell me what's the correct pattern to use here?
> 
> 
> Thank you,
> Andy
> 
> 
> 
> 
> 
> 
> 
> 
> 
> ---------------------------------------------------------------------
> 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]

Reply via email to