Hi All,

I have an issue trying to test an ajax event.

I have two different wicket classes which need to talk each other.
Both classes have a TextField plus a ListMultipleChoice. When the user
types a word into the class A textField the items of the class A list
get filtered and, based on
the new class A list choices, the class B list gets filtered as well.

To achieve that I have the following on the class A textField

//Class A
new OnChangeAjaxBehavior()
        {
            /**
                         *
                         */
                        private static final long serialVersionUID = 1L;

                        @Override
            protected void onUpdate(AjaxRequestTarget target)
            {
                                
[12]          
listMultipleChoice.setDefaultModelObject(getValue(txtField.getDefaultModelObjectAsString()));
                List<String> selectedClassAItems = getSelected();
                classB.filterByClassAItems(selectedClassAItems);
                target.addComponent(classB.getListMultipleChoice());
                target.addComponent(listMultipleChoice);
            }
        };

                
which actually it's working fine.

To test it I have the following

                textField<String> classATextField = (TextField<String>)
classAWicketTester.getComponentFromLastRenderedPage("panel:ajaxMultiChoiceform:filterBox");
                classATextField.setDefaultModelObject("filtered");
                
classAWicketTester.executeAjaxEvent(classATextField.getPageRelativePath(),
"onchange");
                                
                ListMultipleChoice<String> classAItems =
(ListMultipleChoice<String>)
classAWicketTester.getComponentFromLastRenderedPage("panel:ajaxMultiChoiceform:filteredList");

                assertEquals("[filteredItem]", 
classAItems.getChoices().toString());
                ListMultipleChoice<String> classBItems =
(ListMultipleChoice<String>)
classBWicketTester.getComponentFromLastRenderedPage("panel:ajaxMultiChoiceform:filteredList");
                assertEquals("[filteredClassBItem]", 
classBItems.getChoices().toString());



###########

Now the issue is that for some reason using the executeAjaxEvent, to
fire the onchange event, the model into
txtField.getDefaultModelObjectAsString() (line 12) is always null
hence I cannot retrieve the text value set and filter both lists.

I've checked during the debugging the ids of the component and they
are exactly the same, so I'm sure the textField called here in line 12
is the same one used to set
classATextField.setDefaultModelObject("filtered");
but for some reason even if it's the same the model is null.

Any clue? Is executeAjaxEvent enough the fire the onUpdate?


Regards
Antonio

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to