yep both ActionFormBeans are java bean compliant here's the code note i didn't copy any irelevevant method (dont have reset() method for any bean) ============================= bean1 ============================== package beans.studyProgram;
public class StudyProgram extends org.apache.struts.validator.ValidatorActionForm { private static final long serialVersionUID = -3131205735075358925L; private Integer id; private String name; private Integer duration; private Integer ects; private Boolean active; private String description; public StudyProgram() { super(); } public StudyProgram (Integer id) { this.id = id; } public StudyProgram(Integer id, String name, Integer duration, Integer ects, Boolean active, String description) { super(); this.id = id; this.name = name; this.duration = duration; this.ects = ects; this.active = active; this.description = description; } public StudyProgram (StudyProgram clone) { super (); this.id = clone.id; this.name = clone.name; this.duration = clone.duration; this.ects = clone.ects; this.active = clone.active; this.description = clone.description; } public StudyProgram clone (StudyProgram clone) { return new StudyProgram (clone); } public Integer getId() { return id; } public String getID () { return id.toString(); } public String getName() { return name; } public Integer getDuration() { return duration; } public Integer getEcts() { return ects; } public Boolean getActive() { return active; } public String getDescription() { return description; } public void setId(Integer id) { this.id = id; } public void setName(String name) { this.name = name; } public void setDuration(Integer duration) { this.duration = duration; } public void setEcts(Integer ects) { this.ects = ects; } public void setActive(Boolean active) { this.active = active; } public void setDescription(String description) { this.description = description; } } ================================ bean2 (has bean1 as a property) ================================ package beans.department; import beans.studyProgram.StudyProgram; public class Department extends org.apache.struts.validator.ValidatorActionForm { private static final long serialVersionUID = 4766571497570970495L; private Integer id; private String name; private Boolean active; private String description; private StudyProgram program; public Department() { super(); } public Department (Integer id) { this.id = id; } public Department(Integer id, String name, Boolean active, String description, StudyProgram program) { super(); this.id = id; this.name = name; this.active = active; this.description = description; this.program = program; } public Department (Department clone) { super (); this.id = clone.id; this.name = clone.name; this.active = clone.active; this.description = clone.description; if(clone.hasProgram()) this.program = clone.program; } public Department clone (Department clone) { return new Department (clone); } public boolean hasProgram () { return program!=null; } public Integer getId() { return id; } public String getID() { return id.toString(); } public String getName() { return name; } public Boolean getActive() { return active; } public String getDescription() { return description; } public StudyProgram getProgram() { return program; } public void setId(Integer id) { this.id = id; } public void setName(String name) { this.name = name; } public void setActive(Boolean active) { this.active = active; } public void setDescription(String description) { this.description = description; } public void setProgram (StudyProgram program) { this.program = program; } } ================================== struts config file ================================== <struts-config> <form-beans> <form-bean name="User" type="beans.user.User" /> <form-bean name="StudyProgram" type="beans.studyProgram.StudyProgram" /> <form-bean name="Department" type="beans.department.Department" /> ...... <action input="/view/editDepartment.jsp" name="Department" path="/SaveD" scope="request" type="actions.department.SaveDAction"> <forward name="fail" path="/view/editDepartment.jsp"/> </action> ================================= jsp page (just one part) no need to copy all ================================= <html:form action="/SaveD" method="POST"> <html:hidden property="program.id" value="<%=isNew? program.getID() : department.getProgram().getID()%>"/> <html:hidden property="id" value='<%=isNew? "" : department.getID()%>'/> =============================== tomcat trace =============================== SEVERE: Servlet.service() for servlet action threw exception java.lang.IllegalArgumentException: No bean specified at org.apache.commons.beanutils.PropertyUtilsBean.getPropertyDescriptor(PropertyUtilsBean.java:751) at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:937) at org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:811) at org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:298) at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:473) at org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:818) at utils.controller.RequestProcessHandler.processPopulate(RequestProcessHandler.java:384) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:194) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source) =============================================================== Laurie Harper wrote: > > auz wrote: >> hope some1 can help me out, i have a Struts ActionFormBean who has a >> complex >> type as an attribute (also ActionFormBean), the problem is i dont know >> how >> to populate it, tryed everything. i presume i have to extend >> RequestProcessor's populateProcess method or something like that, can >> any1 >> help. NOTE i'm using struts 1.3.9. I have tryed all options for property >> name on page using struts tags ie (property="bean1.bean2.id" or "bean2". >> "bean2.id" ) and also made various setters for property bean1 but >> nothing >> gave any result every time i get beanUtils populate exception >> >> tnx >> >> i know this can be done, just dunno how, some code would also be >> apritiated > > Ditto :-) Post the code you're using, the stack trace for the exception > and any other relevant log output and perhaps someone can see where > you're going wrong. This should work pretty easily. > > - Are both ActionFormBBean classes properly JavaBean compliant? > > - Do you have the appropriate getter/setter pairs on the 'outer' bean > for the 'inner' one? (i.e. getBean2() / setBean2() methods) > > - how are you instantiating the inner bean? (statically? in bean1's > constructor? in bean1's reset() method?) > > You could also try cranking log levels up to debug and see if you can > spot a problem in the additional log messages. > > L. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > -- View this message in context: http://www.nabble.com/populating-ActionFormBean-s-tp15518640p15548570.html Sent from the Struts - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]