Glad you worked it out :)

Dave

On Wed, Oct 13, 2010 at 4:30 PM, Ryan Beckes <rbec...@gmail.com> wrote:

> Dave,
>
> Thanks for the tip, it worked perfectly! To recap, I changed the addresses
> mapping....
>
>    /** persistent field */
>    @OneToMany(mappedBy="customer",
> targetEntity=com.inftropy.plus.account.Customer.model.Address.class,
> cascade
> = { CascadeType.ALL}, fetch=FetchType.EAGER)
>    @IndexedEmbedded
>     @MapKey(name="id")
>    private Map<java.lang.Long, Address> addresses;
>
> ... and the jsp...
>
>        <table>
>          <tr>
>            <td>
>              <s:text name="addressIdTitle"/>
>            </td>
>            <s:iterator value="#attr.customer.addresses"
> status="custAddressStatus">
>            <td>
>               <s:textfield name="addresses[%{key}].id" value="%{value.id
> }"/>
>             </td>
>            </s:iterator>
>          </tr>
>          <tr>
>            <td>
>              <s:text name="addressCodeTitle"/>
>            </td>
>            <s:iterator value="#attr.customer.addresses"
> status="custAddressStatus">
>            <td>
>               <s:textfield name="addresses[%{key}].code"
> value="%{value.code}"/>
>            </td>
>            </s:iterator>
>          </tr>
>        </table>
>
>
> Best,
> Ryan
>
>
> On Tue, Oct 12, 2010 at 1:26 PM, Dave Newton <davelnew...@gmail.com>
> wrote:
>
> > I don't know about sets; personally I'd use a map so you actually have a
> > way
> > to access them by something meaningful, like an ID. Then you use
> map-based
> > property field names (it's [] or (), with the key inside, I forget which
> > off
> > the top of my head). I think () is for indexed, so I'd aim for [] first.
> >
> > Dave
> >
> > On Tue, Oct 12, 2010 at 2:21 PM, Ryan Beckes <rbec...@gmail.com> wrote:
> >
> > > Hello,
> > >
> > > I'm using an action which implements the ModelDriven interface where my
> > > model is a hibernate POJO (e.g. Customer). In this Customer I have a
> > > OneToMany relationship with another hibernate POJO (e.g. Address)...
> > >
> > >    /** persistent field */
> > >    @OneToMany(mappedBy="customer",
> > > targetEntity=com.inftropy.plus.account.Customer.model.Address.class,
> > > cascade
> > > = { CascadeType.ALL}, fetch=FetchType.EAGER)
> > >    @IndexedEmbedded
> > >    private Set<Address> addresses;
> > >
> > > ... I'm trying to create a form that allows the setting for multiple
> > > addresses for the current customer. For example, say my address has two
> > > fields (id and name) and I want to set two addresses for a certain
> > > Customer....
> > >
> > > BEGIN jsp
> > > <s:iterator value="model" status="customerStatus" id="customer">
> > >        <table>
> > >          <tr>
> > >            <td>
> > >              <s:text name="addressIdTitle"/>
> > >            </td>
> > >            <s:iterator value="#attr.customer.addresses"
> > > status="custAddressStatus">
> > >            <td>
> > >              <s:textfield name="addresses.id" value="%{id}"/>
> > >            </td>
> > >            </s:iterator>
> > >          </tr>
> > >          <tr>
> > >            <td>
> > >              <s:text name="addressCodeTitle"/>
> > >            </td>
> > >            <s:iterator value="#attr.customer.addresses"
> > > status="custAddressStatus">
> > >            <td>
> > >              <s:textfield name="addresses.code" value="%{code}"/>
> > >            </td>
> > >            </s:iterator>
> > >          </tr>
> > > </s:iterator>
> > > END jsp
> > >
> > > BEGIN resulting html
> > >
> > >        <table>
> > >          <tr>
> > >            <td>
> > >              addressIdTitle
> > >            </td>
> > >
> > >
> > >            <td>
> > >              <input type="text" name="addresses.id" value="2"
> > > id="Customer_update_addresses_id"/>
> > >            </td>
> > >
> > >            <td>
> > >              <input type="text" name="addresses.id" value="1"
> > > id="Customer_update_addresses_id"/>
> > >            </td>
> > >
> > >          </tr>
> > >          <tr>
> > >            <td>
> > >
> > >              addressCodeTitle
> > >            </td>
> > >
> > >            <td>
> > >              <input type="text" name="addresses.code" value="SHIPTO"
> > > id="Customer_update_addresses_code"/>
> > >            </td>
> > >
> > >            <td>
> > >              <input type="text" name="addresses.code" value="BILLTO"
> > > id="Customer_update_addresses_code"/>
> > >            </td>
> > >          </tr>
> > >       </table>
> > > END resulting html
> > >
> > > ... Is there a convention I can use (in this case I tried
> > > addresses.<field>, which didn't work) so that the fields I set
> > > correspond to the associated Address object for the current model?
> > >
> > > Thanks,
> > > Ryan
> > >
> >
>

Reply via email to