Assume this architecture: Action | v 1...n Content | v 1..n Translation
<s:iterator value="contentList" status="contentListStatus"> <s:iterator value="top" status="translationsStatus"> <td><s:property value="id" /></td> <td><s:property value="expression" /></td> <td><s:property value="translation" /></td> </tr> </s:iterator> 2) Session s = HibernateUtil.getSessionFactory().openSession(); > if(document_id == null){ > documentList= (List<Document>)s.createQuery("from Document d > where d.project="+project_id).list(); > }else{ > documentList= (List<Document>)s.createQuery("from Document d > where d.project="+project_id).list(); > contentList = (List<Content>) > s.createQuery("from Content c where c.document="+document_id).list(); > } //I must have missed where is document_id is populated before the handoff to hibernate? 3)struts-config.xml contains action declaration with result-type declarations for success and or fail and or input results i assume you have a success result-type declaration for or a default result-type? <action name="MyAction" class="packageName.MyAction"> <result>success.jsp</result> </action> ? Martin Gainty ______________________________________________ Jogi és Bizalmassági kinyilatkoztatás/Verzicht und Vertraulichkeitanmerkung/Note de déni et de confidentialité Ez az üzenet bizalmas. Ha nem ön az akinek szánva volt, akkor kérjük, hogy jelentse azt nekünk vissza. Semmiféle továbbítása vagy másolatának készítése nem megengedett. Ez az üzenet csak ismeret cserét szolgál és semmiféle jogi alkalmazhatósága sincs. Mivel az electronikus üzenetek könnyen megváltoztathatóak, ezért minket semmi felelöség nem terhelhet ezen üzenet tartalma miatt. Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene Empfaenger sein, so bitten wir hoeflich um eine Mitteilung. Jede unbefugte Weiterleitung oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht dient lediglich dem Austausch von Informationen und entfaltet keine rechtliche Bindungswirkung. Aufgrund der leichten Manipulierbarkeit von E-Mails koennen wir keine Haftung fuer den Inhalt uebernehmen. Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le destinataire prévu, nous te demandons avec bonté que pour satisfaire informez l'expéditeur. N'importe quelle diffusion non autorisée ou la copie de ceci est interdite. Ce message sert à l'information seulement et n'aura pas n'importe quel effet légalement obligatoire. Étant donné que les email peuvent facilement être sujets à la manipulation, nous ne pouvons accepter aucune responsabilité pour le contenu fourni. > Date: Tue, 14 Jun 2011 06:16:36 -0700 > From: icid...@yahoo.com > Subject: Fw: RE: struts tags: How to use a list inside another list > To: user@struts.apache.org > > > > --- On Tue, 6/14/11, Alexandru <icid...@yahoo.com> wrote: > > From: Alexandru <icid...@yahoo.com> > Subject: RE: struts tags: How to use a list inside another list > To: "Martin Gainty" <mgai...@hotmail.com> > Date: Tuesday, June 14, 2011, 9:15 AM > > So it is possible to send a list with another list ( 2d list) to a servlet? > My sources follows: > > <s:form action="do-translate-document" cssClass="formtable" > method="POST"> > <s:iterator value="contentList"> > <tr><td> > <p class="expression"> > <s:property value="expression" /> > </p> > <s:hidden name="content.id"/> > <textarea > name="contentList.content.translations.translation"> </textarea> > <s:iterator value="translations"> > <p class="translation"><s:property value="translation" /></p> > </s:iterator> > </td></tr> > </s:iterator> > <s:submit /> > </s:form> > > Content.java > ********** > public class Content { > private Long id; > private String expression; > private List<Translation> translations; > > public void setExpression(String expression) > { > this.expression = expression; > } > > > public String getExpression() { > return expression; > } > > public void setTranslations(List<Translation> translation) { > this.translations = translation; > } > > public List<Translation> getTranslations() { > if(translations == null) > translations = new ArrayList<Translation>(); > return this.translations; > } > > public void addTranslation(Translation translation){ > > getTranslations().add(translation); > } > public void setId(Long id) { > this.id = id; > } > > public Long getId() { > return id; > } > > } > > > Translation.java > ******** > public class Translation { > private Long id; > private Content expression; > private String translation; > > public Translation(){} > > public Translation(String s){ > translation = s; > } > > public void setId(Long id) { > this.id = id; > } > > > public > Long getId() { > return id; > } > > public void setExpression(Content expression) { > this.expression = expression; > } > > public Content getExpression() { > return expression; > } > > public void setTranslation(String translation) { > this.translation = translation; > } > > public String getTranslation() { > return translation; > } > } > > > TranslateDocumentAction.java > ******************* > public class TranslateDocumentAction extends ActionSupport { > > private static final long serialVersionUID = -1752813781713631809L; > > private List<Document> documentList; > private List<Content> contentList; > private String project_id; //Project's id > private String document_id;//Document's id > > > public String selectDocument(){ > Session s = HibernateUtil.getSessionFactory().openSession(); > if(document_id == null){ > documentList= (List<Document>)s.createQuery("from Document d > where d.project="+project_id).list(); > }else{ > documentList= (List<Document>)s.createQuery("from Document d > where d.project="+project_id).list(); > contentList = (List<Content>) > s.createQuery("from Content c where c.document="+document_id).list(); > } > s.close(); > return SUCCESS; > } > > public void validate(){} > > public void setDocumentList(List<Document> documentList) { > this.documentList = documentList; > } > > public List<Document> getDocumentList() { > if(documentList ==null) > documentList = new ArrayList<Document>(); > return documentList; > } > > public void setProject_id(String project_id) { > > this.project_id = project_id; > } > > public String getProject_id() { > return project_id; > } > > public void setDocument_id(String document_id) { > this.document_id = document_id; > } > > public String getDocument_id() { > return document_id; > } > > public void setContentList(List<Content> contentList) { > this.contentList = contentList; > } > > public List<Content> getContentList() { > return contentList; > } > } > > > > --- On Tue, 6/14/11, Martin Gainty > <mgai...@hotmail.com> wrote: > > From: Martin Gainty <mgai...@hotmail.com> > Subject: RE: struts tags: How to use a list inside another list > To: icid...@yahoo.com > Date: Tuesday, June 14, 2011, 8:52 AM > > > > > > > without looking at the Action class and the struts-config.xml it is difficult > to determine the failure to submit problem ..i did notice > 1)contentList.content.translations.translation whwre name is not camelcase > but lowercase and does not include package identitifer e.g. > name="name" > 2)you endtag textarea to exclude <s:iterator value="translations">..thus > textarea is one giant block of text without any relationship > to any of the other declared properties > 3)the declared iterator <s:iterator value="translations"> has no knowledge or > association with previous iterator <s:iterator value="translations"> and does > not reflect the current state of the iterator e.g.: > <!-- this example pulls from collection leftSideCartoonCharacters and the > property will output the count (and the top property) --> > <s:iterator value="leftSideCartoonCharacters" > status="stat"> > <s:property value="%{#stat.count}" />.<s:property value="top" > /> > </s:iterator> > > ? > difficult to say whats going on without seeing your action class and > struts-config.xml > Martin Gainty > ______________________________________________ > Verzicht und Vertraulichkeitanmerkung/Note de déni et de confidentialité > > Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene Empfaenger > sein, so bitten wir hoeflich um eine Mitteilung. Jede unbefugte Weiterleitung > oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht dient lediglich > dem Austausch von Informationen und entfaltet keine rechtliche > Bindungswirkung. Aufgrund der leichten Manipulierbarkeit von E-Mails koennen > wir keine Haftung fuer den Inhalt > uebernehmen. > Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le > destinataire prévu, nous te demandons avec bonté que pour satisfaire informez > l'expéditeur. N'importe quelle diffusion non autorisée ou la copie de ceci > est interdite. Ce message sert à l'information seulement et n'aura pas > n'importe quel effet légalement obligatoire. Étant donné que les email > peuvent facilement être sujets à la manipulation, nous ne pouvons accepter > aucune responsabilité pour le contenu fourni. > > > > > > Date: Tue, 14 Jun 2011 05:33:54 -0700 > > From: icid...@yahoo.com > > Subject: Re: struts tags: How to use a list inside another list > > To: user@struts.apache.org > > > > Is there a way to submit the contentList back to the server? in other > > words, can i send a list from jsp to struts? I tried the following but it > > doesn't work: > > > > <s:form > action="do-translate-document" cssClass="formtable" > > method="POST"> > > <s:iterator value="contentList"> > > <tr><td> > > <p > > > <s:property value="expression" /> > > </p> > > <s:hidden name="id"/> > > <textarea name="contentList.content.translations.translation"> > > </textarea> > > <s:iterator value="translations"> > > > <p class="translation"><s:property value="translation" /></p> > > </s:iterator> > > </td></tr> > > </s:iterator> > > <s:submit /> > > </s:form> > > > > >