Can anyone please help?
nanotech wrote:
>
> Hi All,
> I have a two Radios that control two dropdowns which get Enabled/disbaled
> based on radio selected. All the four components are a part of radiogroup.
> When page is loaded radio1 is pre-selected and Dropdown1 is
> enabled--radio2 is unselected and DropDown2 is dis-abled.
>
> The Problem:
> When I change the selection and select radio2 (which enables DropDown2
> also, and subsequently disables Dropdown1 and unselects radio1) and submit
> the form I get the Exception
> Attempted to set property value on a null object. Property expression:
> ddc2 Value: codeA21/descA21
>
> I believe when second radio button is selected the model somehow becomes
> null.
> No matter where I put the code for the model I cannot get past the
> exception mentioned above.
>
> I tried putting it in AjaxEventBehavior attached to radios and in
> AjaxFormChoiceComponentUpdatingBehavior attached to radiogroup but no
> help.
>
> Question:
> 1. Where should the code for enable/disable dropdowns should go
> "AjaxEventBehavior" attached to radios or
> "AjaxFormChoiceComponentUpdatingBehavior"
> attached to radiogroup?
> 2. How should I update the model behind then dropdown? I set the model
> when I load up the form but this doesn't seem to work.
> 3. After changing the radio selection When I submit the form the form
> model also becomes null, why is that?
>
> Please point out what am I missing.
>
> Here is my current code snippet looks like.
> Wicket 1.3.4
> java 1.5
>
> =============
> TestForm.java
> =============
> private class TestForm extends Form
> {
>
> private DropDownChoice ddc1;
> private DropDownChoice ddc2;
>
> public TestForm(String id) {
> super(id);
> IModel formModel = new CompoundPropertyModel(new Person());
> setModel(formModel);
>
> final RadioGroup group = new RadioGroup("group", formModel);
>
> Radio radio1 = new Radio("radio1", formModel);
> Radio radio2 = new Radio("radio2", formModel);
>
> // DropDown controlled by Radio1...
> DDCPOJO pojo1 = new DDCPOJO("codeA11", "descA11");
> DDCPOJO pojo2 = new DDCPOJO("codeA12", "descA12");
> DDCPOJO pojo3 = new DDCPOJO("codeA13", "descA13");
> final List<DDCPOJO> alPojo1 = new ArrayList<DDCPOJO>();
> alPojo1.add(pojo1);
> alPojo1.add(pojo2);
> alPojo1.add(pojo3);
>
> ddc1 = new DropDownChoice("ddc1", alPojo1, new ChoiceRenderer(
> "code", "code"));
> ddc1.setOutputMarkupId(true);
>
> // Second DDC....
> DDCPOJO pojo4 = new DDCPOJO("codeA21", "descA21");
> DDCPOJO pojo5 = new DDCPOJO("codeA22", "descA22");
> DDCPOJO pojo6 = new DDCPOJO("codeA23", "descA23");
> final List<DDCPOJO> alPojo2 = new ArrayList<DDCPOJO>();
> alPojo2.add(pojo4);
> alPojo2.add(pojo5);
> alPojo2.add(pojo6);
>
> ddc2 = new DropDownChoice("ddc2", alPojo2, new ChoiceRenderer(
> "code", "code"));
> ddc2.setOutputMarkupId(true);
>
> radio1.add(new AjaxEventBehavior("onClick") {
> private static final long serialVersionUID = 1L;
>
> @Override
> protected void onEvent(AjaxRequestTarget target) {
> group.processInput();
> // On click DISABLE text2 and ddc2
> ddc2.setEnabled(false);
>
> // On click ENABLE text1 and ddc1
> ddc1.setEnabled(true);
> // Add the targets.
> target.addComponent(ddc2);
> target.addComponent(ddc1);
> }
>
> });
>
> radio2.add(new AjaxEventBehavior("onClick") {
> private static final long serialVersionUID = 1L;
>
> @Override
> protected void onEvent(AjaxRequestTarget target) {
>
> group.processInput();
> // On click DISABLE text1 and ddc1
> ddc1.setEnabled(false);
> // On click ENABLE text2 and ddc2
> ddc2.setEnabled(true);
> // Add the Targets...
> target.addComponent(ddc2);
> target.addComponent(ddc1);
>
> }
>
> });
>
> // Add the Radio to Group
> group.add(radio1);
> group.add(radio2);
>
> // Add the drop down choice to group
> group.add(ddc1);
> group.add(ddc2);
>
> add(group);
>
> group.add(new AjaxFormChoiceComponentUpdatingBehavior() {
> @Override
> protected void onUpdate(AjaxRequestTarget target) {
> if (group.getInput().equals("radio1"))
> {
> // I am doing that in "AjaxEventBehavior also
> // Don't know what is the correct place to do it.
>
> // On click DISABLE text2 and ddc2
> ddc2.setEnabled(false);
>
> // On click ENABLE text1 and ddc1
> ddc1.setEnabled(true);
> // Add the targets.
> target.addComponent(ddc2);
> target.addComponent(ddc1);
>
> } else {
> // On click DISABLE text1 and ddc1
> ddc1.setEnabled(false);
> // On click ENABLE text2 and ddc2
> ddc2.setEnabled(true);
> // Add the Targets...
> target.addComponent(ddc2);
> target.addComponent(ddc1);
> }
> }
>
> });
>
> add(new AjaxFallbackButton("btnSubmit", formModel,
> this.getRootForm()) {
> @Override
> protected void onSubmit(AjaxRequestTarget target, Form form)
> {
> Person p = (Person) form.getModelObject();
> System.out.println(p.toString());
>
> }
>
> });
>
> }
> }
>
> =============
> TestForm.html
> =============
> <form wicket:id="testForm">
> <div wicket:id="group">
> <table>
> <tr>
> <td>
> <label>Radio 1</label>
> <input type="radio" wicket:id="radio1"
> />
> </td>
> <td>
> <select wicket:id="ddc1">
> <option>ddc11</option>
> <option>ddc12</option>
> </select>
> </td>
> </tr>
> <tr>
> <td>
> <label>Radio 2</label>
> <input type="radio" wicket:id="radio2"
> />
> </td>
> <td>
> <select wicket:id="ddc2">
> <option>ddc21</option>
> <option>ddc22</option>
> </select>
> </td>
> </tr>
> </table>
> </div>
> <input type="submit" wicket:id="btnSubmit" value="Submit Form" /></form>
>
>
--
View this message in context:
http://www.nabble.com/Need-little-help-in-understanding-AjaxEventBehavior%28on-a-Radio%29-and-AjaxFormChoiceComponentUpdatingBehavior%28on-a-RadioGroup%29-tp18824832p18835334.html
Sent from the Wicket - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]