Evgeniy Strokin wrote:
> This is exactly that I have. Also i asumed that I need
> in ContactInfo.class something like this:
> public Email getEmails(int index){
> return emails.toArray()[index];
> }
>
> For property:
> model.currentPerson.contactInfo.emails[0].emailAddress
>
> But I notised that Struts calls getEmails() for this
> property instead of getEmails(0).
> getEmails(0) never called actualy.
>
> I don't know what to do)))
>
> Thanks
> Eugene
>
>
> --- "Kandula, Sunita" <skandula@ets.org> wrote:
>
>
>>Can you give code details of ContactInfo and Email
>>classes .
>>I am assuming you will have something like the
>>following, basically no
>>indexed methods are required.
>>ContactInfo.class
>> /**
>> * @return
>> */
>>
>> private Collection emails;
>> public Collection getEmails() {
>> return emails;
>> }
>>
>> /**
>> * @param collection
>> */
>> public void setEmails(Collection collection) {
>> emails = collection;
>> }
>>
>>
>>and your Email class should have following methods.
>>public String getEmailAddress() {
>> return emailAddress;
>>}
>>
>>/**
>> * @param string
>> */
>>public void setEmailAddress(String string) {
>> emailAddress = string;
>>}
>>
>>
>>
>>-----Original Message-----
>>From: Evgeniy Strokin
>>[mailto:evgeniy_strokin@yahoo.com]
>>Sent: Wednesday, December 15, 2004 2:40 PM
>>To: Struts Users Mailing List
>>Subject: RE: indexed property is not updated after
>>submit
>>
>>
>>Thanks,
>>I think I'm getting close))
>>But your example gives me this exception:
>>---------------------------
>>Invalid argument looking up property
>>
>
> model.currentPerson.contactInfo.emails[0].emailAddress
>
>>of bean form
>>---------------------------
>>Could you clue me in why is what?
>>
>>Thanks,
>>Eugene
>>
>>--- "Kandula, Sunita" <skandula@ets.org> wrote:
>>
>>
>>>Could be done like this:
>>><%@ taglib uri="/WEB-INF/struts-nested.tld"
>>>prefix="nested" %>
>>><nested:iterate name="form"
>>>property="model.currentPerson.contactInfo.emails"
>>>
>>> <nested:text property="emailAddress" />
>>></nested:iterate>
>>>
>>>
>>>
>>>-----Original Message-----
>>>From: Evgeniy Strokin
>>>[mailto:evgeniy_strokin@yahoo.com]
>>>Sent: Wednesday, December 15, 2004 10:04 AM
>>>To: user@struts.apache.org
>>>Subject: indexed property is not updated after
>>>submit
>>>
>>>
>>>Hi,
>>>I have a problem:
>>>Struts config file has:
>>><form-beans>
>>><form-bean name="form"
>>>type="org.apache.struts.action.DynaActionForm">
>>><form-property name="model"
>>>type="com.mycomp.SecurityAdminModel"/>
>>></form-bean>
>>></form-beans>
>>>
>>>On JSP I have:
>>><logic:iterate id="email"
>>>property="model.currentPerson.contactInfo.emails"
>>>name="form" >
>>> <html:text property="emailAddress" name="email"
>>></logic:iterate>
>>>
>>>It generates folowing HTML:
>>><input type="text" name="email[0].emailAddress"
>>>value="homer@simpson.com">
>>><input type="text" name="email[1].emailAddress"
>>>value="bart@simpson.com">
>>>
>>>But when I submit the form actual values in a bean
>>>are
>>>not updated. They are still the same.
>>>
>>>This is my Bean:
>>>package com.mycomp.securityadmin;
>>>public class SecurityAdminModel implements
>>>Serializable{
>>>
>>>private Person currentPerson=null;
>>> public Phone getPhone(int ind){
>>> if(currentPerson!=null &&
>>>
>>
>>currentPerson.getContactInfo()!=null
>>
>>>&&
>>>currentPerson.getContactInfo().getPhones()!=null
>>
>>&&
>>
>>> ind>=0 &&
>>>
> ind<currentPerson.getContactInfo().getPhones().size())
>
>>> return
>>>
>>
> (Phone)currentPerson.getContactInfo().getPhones().toArray()[ind];
>
>>> else return null;
>>> }
>>>
>>> public void setPhone(int ind, Phone phone){
>>> if(currentPerson!=null &&
>>>
>>
>>currentPerson.getContactInfo()!=null
>>
>>>&&
>>>currentPerson.getContactInfo().getPhones()!=null
>>
>>&&
>>
>>> ind>=0 &&
>>>
> ind<currentPerson.getContactInfo().getPhones().size())
>
> currentPerson.getContactInfo().getPhones().toArray()[ind]=phone;
>
>>> }
>>>
>>> public Address getAddress(int ind){
>>> if(currentPerson!=null &&
>>>
>>
>>currentPerson.getContactInfo()!=null
>>
>>>&&
>>>
>>currentPerson.getContactInfo().getAddresses()!=null
>>
>>>&&
>>> ind>=0 &&
>>> ind
>>>
>>
> <currentPerson.getContactInfo().getAddresses().size())
>
>>> return
>>>
>>
> (Address)currentPerson.getContactInfo().getAddresses().toArray()[ind];
>
>>> else return null;
>>> }
>>>
>>> public void setAddress(int ind, Address adr){
>>> if(currentPerson!=null &&
>>>
>>
>>currentPerson.getContactInfo()!=null
>>
>>>&&
>>>
>>currentPerson.getContactInfo().getAddresses()!=null
>>
>>>&&
>>> ind>=0 &&
>>>
> ind<currentPerson.getContactInfo().getAddresses().size())
>
> currentPerson.getContactInfo().getAddresses().toArray()[ind]=adr;
>
>>> }
>>>
>>> public Email getEmail(int ind){
>>> if(currentPerson!=null &&
>>>
>>
>>currentPerson.getContactInfo()!=null
>>
>>>&&
>>>currentPerson.getContactInfo().getEmails()!=null
>>
>>&&
>>
>>> ind>=0 &&
>>>
> ind<currentPerson.getContactInfo().getEmails().size())
>
>>> return
>>>
>>
> (Email)currentPerson.getContactInfo().getEmails().toArray()[ind];
>
>>> else return null;
>>> }
>>>
>>> public void setEmail(int ind, Email email){
>>> if(currentPerson!=null &&
>>>
>>
>>currentPerson.getContactInfo()!=null
>>
>>>&&
>>>currentPerson.getContactInfo().getEmails()!=null
>>
>>&&
>>
> === message truncated ===
>
>
>
>
> __________________________________
> Do you Yahoo!?
> The all-new My Yahoo! - Get yours free!
> http://my.yahoo.com
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>
> .
>
I did it with ActionForm
public class yourForm extends ActionForm {
...
public Email getEmail(int index) {
return model.getEmail(index);
}
public void setEmail(int index, Email email) {
model.setEmail(index, email);
}
}
On post, execute setEmail(), because in html generates
<input type="text" name="email[0].emailAddress" >
Try with DynaForm.
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
|