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>



Reply via email to