Dear Adam,
I just added a public Child getValues(int idx) in the Parent class definition but it is never called. Could u explain to me where and how can I turn on the parameterinterceptor logging? In the struts.xml file? thks a lot bruno > From: apin...@hotmail.co.uk > To: user@struts.apache.org > Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > Date: Thu, 1 Apr 2010 12:18:48 +0100 > > > > > turn on the parameterinterceptor logging and make sure as mentioned that > > 1) the values you expect for each child are being sent to the server (id and > name) > 2) the parameter names are correct for setting each child > > i had some issues getting lists of items to be updated by form submission > alone. > > for example does your parent object have a getValues method taking an index > value > > getParent().getValues(1).setId(1) > getParent().getValues(1).setName("bob") > > would be called by parameterinterceptor > > > ---------------------------------------- > > From: brgrandj...@live.fr > > To: user@struts.apache.org > > Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > > Date: Thu, 1 Apr 2010 12:16:09 +0200 > > > > > > Dear René > > > > > > > > I changed my jsp page so as to integrate the following block: > > > > > > > > > > > > > > > > > > > > > > which generates the following html code: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I can display my complete Child Set but I got the same result after > > updating: my Child Set is empty. > > > > > > > > Is that necessary to modify my ParentAction as well? If yes what to do? > > > > > > > > public class ParentAction extends ActionSupport implements ModelDriven { > > > > private static final long serialVersionUID = -2662966220408285700L; > > private Parent cl = new Parent(); > > private List clList = new ArrayList(); > > private ParentDAO clDAO = new ParentDAOImpl(); > > > > @Override > > public Parent getModel() { > > return cl; > > } > > > > public String saveOrUpdate() > > { // cl.values is empty here!! > > clDAO.saveOrUpdateParent(cl); > > return SUCCESS; > > } > > > > public String save() > > { > > clDAO.saveParent(cl); > > return SUCCESS; > > } > > > > public String list() > > { > > clList = clDAO.listParent(); > > return SUCCESS; > > } > > > > public String delete() > > { > > HttpServletRequest request = (HttpServletRequest) > > ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); > > clDAO.deleteParent(Long.parseLong(request.getParameter("id"))); > > return SUCCESS; > > } > > > > public String edit() > > { // cl.values contains some valid Child elements here!! > > HttpServletRequest request = (HttpServletRequest) > > ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); > > cl = clDAO.listParentById(Long.parseLong(request.getParameter("id"))); > > } > > return SUCCESS; > > } > > > > public Parent getParent() { > > return cl; > > } > > > > public void setParent(Parent cl) { > > this.cl = cl; > > } > > > > public List getParentList() { > > return clList; > > } > > > > public void setParentList(List clList) { > > this.clList = clList; > > } > > } > > > > > > > >> Date: Thu, 1 Apr 2010 11:30:23 +0200 > >> From: gie...@it-neering.net > >> To: user@struts.apache.org > >> Subject: Re: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > >> > >> Given the model you presented in the first post, your problem seems to > >> be that the posted values have not the correct name for the children's > >> form fields. The parameters names you would need are > >> > >> id > >> name > >> values[0].id > >> values[0].name > >> values[1].id > >> values[2].name > >> ... > >> > >> for the parameters interceptor to work properly when applying the posted > >> values. > >> > >> See here for more details: > >> http://struts.apache.org/2.1.8/docs/tabular-inputs.html > >> > >> - René > >> > >> bruno grandjean schrieb: > >>> Dear Rene, > >>> > >>> Thks a lot for replying to me because I am feeling a little bit alone with > >>> my CRUD ;-). In fact I am trying to build a dynamic MetaCrud. > >>> My pb is simple: in the same jsp page I would like to update a Parent > >>> object > >>> and its Childs (values): > >>> > >>> > >>> > >>>>>> name="name" label="Nom" /> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> From an existing Parent object with many Childs objects I can easily > >>> modify > >>> parent.name for instance but the collection of Child objects (values) is > >>> always empty in the ParentAction (saveOrUpdate() method) after submitting. > >>> However I can display each values[i].name in the jsp page with the correct > >>> value. > >>> So it is not an issue with Hibernate but with the jsp or ModelDriven > >>> interface I don't know..Do you have any idea? > >>> Basically I was not able to find a struts or spring documentation about > >>> CRUD > >>> & association between two entities on the same jsp page. > >>> best regards > >>> bruno > >>> > >>> > >>> > >>> -------------------------------------------------- > >>> From: "Rene Gielen" > >>> Sent: Wednesday, March 31, 2010 7:12 PM > >>> To: "Struts Users Mailing List" > >>> Subject: Re: CRUD with a OneToMany association under Struts 2 / Hibernate > >>> 3 > >>> > >>>> I'm not sure if I understand what your actual question is, nor whether > >>>> it is particularly Struts 2 related (rather than just Hibernate) - but > >>>> you might want to have a look in the CRUD demo section of the Struts 2 > >>>> showcase application. Maybe you will also find this demo useful: > >>>> http://github.com/rgielen/struts2crudevolutiondemo > >>>> > >>>> - René > >>>> > >>>> bruno grandjean schrieb: > >>>>> Hi > >>>>> > >>>>> I am trying to implement a simple CRUD with a OneToMany association > >>>>> under Struts 2 / Hibernate 3. > >>>>> I have two entities Parent and Child: > >>>>> > >>>>> @Entity > >>>>> @Table(name="PARENT") > >>>>> public class Parent { > >>>>> private Long id; > >>>>> private Set values = new HashSet(); > >>>>> .. > >>>>> @Entity > >>>>> @Table(name="CHILD") > >>>>> public class Child { > >>>>> private Long id; > >>>>> private String name; > >>>>> .. > >>>>> > >>>>> I can easily create, delete Parent or read the Child Set (values) but > >>>>> it is impossible to update Child Set. > >>>>> The jsp page (see below) reinit the values Set, no record after > >>>>> updating! > >>>>> Could u explain to me what's wrong? > >>>>> > >>>>> here are my code: > >>>>> > >>>>> @Entity > >>>>> @Table(name="PARENT") > >>>>> public class Parent { > >>>>> private Long id; > >>>>> private Set values = new HashSet(); > >>>>> @Id > >>>>> @GeneratedValue > >>>>> @Column(name="PARENT_ID") > >>>>> public Long getId() { > >>>>> return id; > >>>>> } > >>>>> public void setId(Long id) { > >>>>> this.id = id; > >>>>> } > >>>>> @ManyToMany(fetch = FetchType.EAGER) > >>>>> @JoinTable(name = "PARENT_CHILD", joinColumns = { @JoinColumn(name = > >>>>> "PARENT_ID") }, inverseJoinColumns = { @JoinColumn(name = "CHILD_ID") }) > >>>>> public Set getValues() { > >>>>> return values; > >>>>> } > >>>>> public void setValues(Set lst) { > >>>>> values = lst; > >>>>> } > >>>>> } > >>>>> > >>>>> @Entity > >>>>> @Table(name="CHILD") > >>>>> public class Child { > >>>>> private Long id; > >>>>> private String name; > >>>>> @Id > >>>>> @GeneratedValue > >>>>> @Column(name="CHILD_ID") > >>>>> public Long getId() { > >>>>> return id; > >>>>> } > >>>>> public void setId(Long id) { > >>>>> this.id = id; > >>>>> } > >>>>> @Column(name="NAME") > >>>>> public String getName() { > >>>>> return name; > >>>>> } > >>>>> public void setName(String val) { > >>>>> name = val; > >>>>> } > >>>>> } > >>>>> > >>>>> public interface ParentDAO { > >>>>> public void saveOrUpdateParent(Parent cl); > >>>>> public void saveParent(Parent cl); > >>>>> public List listParent(); > >>>>> public Parent listParentById(Long clId); > >>>>> public void deleteParent(Long clId); > >>>>> } > >>>>> > >>>>> public class ParentDAOImpl implements ParentDAO { > >>>>> @SessionTarget > >>>>> Session session; > >>>>> @TransactionTarget > >>>>> Transaction transaction; > >>>>> > >>>>> @Override > >>>>> public void saveOrUpdateParent(Parent cl) { > >>>>> try { > >>>>> session.saveOrUpdate(cl); > >>>>> } catch (Exception e) { > >>>>> transaction.rollback(); > >>>>> e.printStackTrace(); > >>>>> } > >>>>> } > >>>>> > >>>>> @Override > >>>>> public void saveParent(Parent cl) { > >>>>> try { > >>>>> session.save(cl); > >>>>> } catch (Exception e) { > >>>>> transaction.rollback(); > >>>>> e.printStackTrace(); > >>>>> } > >>>>> } > >>>>> > >>>>> @Override > >>>>> public void deleteParent(Long clId) { > >>>>> try { > >>>>> Parent cl = (Parent) session.get(Parent.class, clId); > >>>>> session.delete(cl); > >>>>> } catch (Exception e) { > >>>>> transaction.rollback(); > >>>>> e.printStackTrace(); > >>>>> } > >>>>> } > >>>>> > >>>>> @SuppressWarnings("unchecked") > >>>>> @Override > >>>>> public List listParent() { > >>>>> List courses = null; > >>>>> try { > >>>>> courses = session.createQuery("from Parent").list(); > >>>>> } catch (Exception e) { > >>>>> e.printStackTrace(); > >>>>> } > >>>>> return courses; > >>>>> } > >>>>> > >>>>> @Override > >>>>> public Parent listParentById(Long clId) { > >>>>> Parent cl = null; > >>>>> try { > >>>>> cl = (Parent) session.get(Parent.class, clId); > >>>>> } catch (Exception e) { > >>>>> e.printStackTrace(); > >>>>> } > >>>>> return cl; > >>>>> } > >>>>> } > >>>>> > >>>>> public class ParentAction extends ActionSupport implements > >>>>> ModelDriven { > >>>>> > >>>>> private static final long serialVersionUID = -2662966220408285700L; > >>>>> private Parent cl = new Parent(); > >>>>> private List clList = new ArrayList(); > >>>>> private ParentDAO clDAO = new ParentDAOImpl(); > >>>>> > >>>>> @Override > >>>>> public Parent getModel() { > >>>>> return cl; > >>>>> } > >>>>> > >>>>> public String saveOrUpdate() > >>>>> { > >>>>> clDAO.saveOrUpdateParent(cl); > >>>>> return SUCCESS; > >>>>> } > >>>>> > >>>>> public String save() > >>>>> { > >>>>> clDAO.saveParent(cl); > >>>>> return SUCCESS; > >>>>> } > >>>>> > >>>>> public String list() > >>>>> { > >>>>> clList = clDAO.listParent(); > >>>>> return SUCCESS; > >>>>> } > >>>>> > >>>>> public String delete() > >>>>> { > >>>>> HttpServletRequest request = (HttpServletRequest) > >>>>> ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); > >>>>> clDAO.deleteParent(Long.parseLong(request.getParameter("id"))); > >>>>> return SUCCESS; > >>>>> } > >>>>> > >>>>> public String edit() > >>>>> { > >>>>> HttpServletRequest request = (HttpServletRequest) > >>>>> ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); > >>>>> cl = clDAO.listParentById(Long.parseLong(request.getParameter("id"))); > >>>>> return SUCCESS; > >>>>> } > >>>>> > >>>>> public Parent getParent() { > >>>>> return cl; > >>>>> } > >>>>> > >>>>> public void setParent(Parent cl) { > >>>>> this.cl = cl; > >>>>> } > >>>>> > >>>>> public List getParentList() { > >>>>> return clList; > >>>>> } > >>>>> > >>>>> public void setParentList(List clList) { > >>>>> this.clList = clList; > >>>>> } > >>>>> } > >>>>> > >>>>> and finally the jsp page: > >>>>> > >>>>> > >>>>>>>>>> "http://www.w3.org/TR/html4/loose.dtd"> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > > > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > > >>>>> > > >>>>> > > > >>>>> > Child(s) > >>>>> > > >>>>> > >>>>>>>>>> class="oddeven"> > >>>>> > > > >>>>> > >>>>> > > >>>>> > >>>>> > > >>>>> > >>>>> Edit > >>>>> > > >>>>> > >>>>> Delete > >>>>> > > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>> > >>>> -- > >>>> René Gielen > >>>> IT-Neering.net > >>>> Saarstrasse 100, 52062 Aachen, Germany > >>>> Tel: +49-(0)241-4010770 > >>>> Fax: +49-(0)241-4010771 > >>>> Cel: +49-(0)163-2844164 > >>>> http://twitter.com/rgielen > >>>> > >>>> --------------------------------------------------------------------- > >>>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org > >>>> For additional commands, e-mail: user-h...@struts.apache.org > >>>> > >>>> > >>> > >>> --------------------------------------------------------------------- > >>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org > >>> For additional commands, e-mail: user-h...@struts.apache.org > >>> > >> > >> -- > >> René Gielen > >> IT-Neering.net > >> Saarstrasse 100, 52062 Aachen, Germany > >> Tel: +49-(0)241-4010770 > >> Fax: +49-(0)241-4010771 > >> Cel: +49-(0)163-2844164 > >> http://twitter.com/rgielen > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org > >> For additional commands, e-mail: user-h...@struts.apache.org > >> > > > > _________________________________________________________________ > > Découvrez comment SURFER DISCRETEMENT sur un site de rencontres ! > > http://clk.atdmt.com/FRM/go/206608211/direct/01/ > _________________________________________________________________ > Do you have a story that started on Hotmail? Tell us now > http://clk.atdmt.com/UKM/go/195013117/direct/01/ > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscr...@struts.apache.org > For additional commands, e-mail: user-h...@struts.apache.org > _________________________________________________________________ Consultez gratuitement vos emails Orange, Gmail, Free, ... directement dans HOTMAIL ! http://www.windowslive.fr/hotmail/agregation/