Hi Michael, Thanks for your reply. I have looked closer just after sending the email found the problem and fixed it same as you have told. The new problem I am facing is, how to get the selected values of the select boxes. Would you please give me an idea on how to do this.
Thx. Fatih -----Original Message----- From: Michael O'Cleirigh [mailto:[EMAIL PROTECTED] Sent: Monday, March 17, 2008 8:52 PM To: users@wicket.apache.org Subject: Re: ListView Problem (contains varying number of components inside) Hi Fatih, The problem is that you have not set a model on your drop down choice so there is a null model which causes the exception you see to be generated. Caused by: java.lang.IllegalStateException: Attempt to set model object on null model of component: productProposalForm:productsPropertyListView:0:dropDown:dropDown Setting a default model on the dropdown choice should fix your problems. i.e. add a 'new Model()' as the second argument to the DropDownChoice constructor public class NestedDropDownPanel extends Panel { public NestedDropDownPanel(String id,int productPropertyId) { super(id); ProductPropertyOptionDAO productPropertyOptionDAO = new ProductPropertyOptionDAO(productPropertyId); DropDownChoice dropDownChoice=new DropDownChoice("dropDown", new Model (), new Model((Serializable)productPropertyOptionDAO.getResultList()),new ChoiceRenderer("name")); dropDownChoice.setRequired(true); add(dropDownChoice); } Mike > > > Hi, > > > > > > I am using a ListView to render the dynamic number of select boxes and > their options. > > Hi Fatih, > > > > The problem is that you have not set a model on your drop down choice > so there is a null model which causes the exception you see to be > generated. > > > > Setting a default model on the dropdown choice should fix your > problems. i.e. add a 'new Model()' as the second argument to the ddc. > > > > > > > > public class NestedDropDownPanel extends Panel { > > > > > > > > public NestedDropDownPanel(String id,int productPropertyId) { > > > > super(id); > > > > ProductPropertyOptionDAO productPropertyOptionDAO = new > > ProductPropertyOptionDAO(productPropertyId); > > > > DropDownChoice dropDownChoice=new DropDownChoice("dropDown", new Model (), new > > Model((Serializable)productPropertyOptionDAO.getResultList()),new > > ChoiceRenderer("name")); > > > > dropDownChoice.setRequired(true); > > > > add(dropDownChoice); > > > > } > > > > > > > > Mike > > I have added all select boxes into a ListView object and listView into a > form and trying to calculate a final price using all selected values from > select boxes. > > > > However, when I submit the form I got an exception before the execution of > onSubmit() method. > > > > I am doing sth wrong but I could not find. Would u please give me some idea > about how to overcome this problem. > > > > Thx. > > Fatih > > > > > > > > > > I have a database design similar to below one. > > > > Product names are coming from db > > and all products have diffrent kind of Properties > > And each property have options > > all also coming from db (choices in the select boxes). > > > > > > Product > > ------------ > > Id > > Name > > > > Eg. > > Audi A3 > > Audi A4 > > Audi A6 > > > > > > ProductProperty > > ---------- > > Id > > Name > > > > Eg. > > Engine Type. > > . > > . > > > > > > ProductPropertyOption > > ------- > > Id > > Name > > > > Eg. > > 1.6lt > > 2.0lt > > 1.9lt Diesel > > . > > . > > > > > > > > > > > > StackTrace: > > > > org.apache.wicket.WicketRuntimeException: Method onFormSubmitted of > interface org.apache.wicket.markup.html.form.IFormSubmitListener targeted at > component [MarkupContainer [Component id = productProposalForm, page = > com.cooldatasoft.page.proposal.ProductMenu, path = > 1:productProposalForm.ProductMenu$ProductProposalForm, isVisible = true, > isVersioned = true]] threw an exception > > at > org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.j > ava:194) > > at > org.apache.wicket.request.target.component.listener.ListenerInterfaceRequest > Target.processEvents(ListenerInterfaceRequestTarget.java:73) > > at > org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(Abstra > ctRequestCycleProcessor.java:90) > > at > org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:116 > 6) > > at org.apache.wicket.RequestCycle.step(RequestCycle.java:1241) > > at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1316) > > at org.apache.wicket.RequestCycle.request(RequestCycle.java:493) > > at > org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:354) > > at > org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:194) > > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application > FilterChain.java:235) > > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh > ain.java:206) > > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja > va:233) > > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja > va: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(Http > 11Protocol.java:584) > > at > org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) > > at java.lang.Thread.run(Unknown Source) > > Caused by: java.lang.reflect.InvocationTargetException > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) > > at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) > > at java.lang.reflect.Method.invoke(Unknown Source) > > at > org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.j > ava:183) > > ... 20 more > > Caused by: java.lang.IllegalStateException: Attempt to set model object on > null model of component: > productProposalForm:productsPropertyListView:0:dropDown:dropDown > > at org.apache.wicket.Component.setModelObject(Component.java:2850) > > at > org.apache.wicket.markup.html.form.FormComponent.updateModel(FormComponent.j > ava:1016) > > at org.apache.wicket.markup.html.form.Form$19.validate(Form.java:1750) > > at > org.apache.wicket.markup.html.form.Form$ValidationVisitor.formComponent(Form > .java:160) > > at > org.apache.wicket.markup.html.form.FormComponent.visitFormComponentsPostOrde > rHelper(FormComponent.java:402) > > at > org.apache.wicket.markup.html.form.FormComponent.visitFormComponentsPostOrde > rHelper(FormComponent.java:389) > > at > org.apache.wicket.markup.html.form.FormComponent.visitFormComponentsPostOrde > rHelper(FormComponent.java:389) > > at > org.apache.wicket.markup.html.form.FormComponent.visitFormComponentsPostOrde > rHelper(FormComponent.java:389) > > at > org.apache.wicket.markup.html.form.FormComponent.visitFormComponentsPostOrde > rHelper(FormComponent.java:389) > > at > org.apache.wicket.markup.html.form.FormComponent.visitFormComponentsPostOrde > r(FormComponent.java:366) > > at > org.apache.wicket.markup.html.form.Form.visitFormComponentsPostOrder(Form.ja > va:1026) > > at > org.apache.wicket.markup.html.form.Form.internalUpdateFormComponentModels(Fo > rm.java:1742) > > at > org.apache.wicket.markup.html.form.Form.updateFormComponentModels(Form.java: > 1709) > > at org.apache.wicket.markup.html.form.Form.process(Form.java:831) > > at > org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:773) > > ... 25 more > > > > > > > > > > > > > > final ListView productsList = new ListView("productsPropertyListView",new > Model( (Serializable)(new ProductPropertyDAO(productId)).getResultList()) ) > { > > public void populateItem(final ListItem item) { > > final TbProductProperty productProperty = > (TbProductProperty) item.getModelObject(); > > item.add(new > Label("productPropertyName",productProperty.getName())); > > item.add(new NestedDropDownPanel("dropDown", > productProperty.getId())); > > > > } > > }; > > productsList.setReuseItems(true); > > add(productsList); > > > > > > > > > > > > > > > > > > > > > > > > public class NestedDropDownPanel extends Panel { > > > > public NestedDropDownPanel(String id,int productPropertyId) { > > super(id); > > ProductPropertyOptionDAO productPropertyOptionDAO = new > ProductPropertyOptionDAO(productPropertyId); > > DropDownChoice dropDownChoice=new DropDownChoice("dropDown",new > Model((Serializable)productPropertyOptionDAO.getResultList()),new > ChoiceRenderer("name")); > > dropDownChoice.setRequired(true); > > add(dropDownChoice); > > } > > > > > > } > > > > > > > > > > > > > > > > <form wicket:id="productProposalForm"> > > <table><tr><td> > > <fieldset> > > <legend>Product Proposal</legend> > > <font color="RED"><span > wicket:id="feedbackPanel"/></font> > > <table> > > <tr > wicket:id="productsPropertyListView"> > > <td><span > wicket:id="productPropertyName"></span></td> > > <td><span > wicket:id="dropDown"></span></td> > > </tr> > > </table> > > > > <input type="submit" > value="Hesapla" wicket:id="calculateButton"/> > > > > </fieldset> > > </td></tr></table> > > </form> > > > > > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]