You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Gytis <li...@mail.ru> on 2012/03/16 10:32:22 UTC

AjaxFormComponentUpdatingBehavior after validation problem

Hello, I have such a problem with AjaxFormComponentUpdatingBehavior. 
I have some DropDownChoice and a CheckBox on a Form. I need to make a change
to DropDown, when I click on CheckBox. But as I try to submit a Form, got
some error, and then click CheckBox DropDown doesn`t change. The code looks
like this: 

   DropDownChoice<SomeEnum> dropDownz = new
DropDownChoice<SomeEnum>("dropDownId",
			Arrays.asList(SomeEnum.values()), new
EnumChoiceRenderer<SomeEnum>(this));
   getGenericModelObject().setValues(SomeEnum.FIRSTVALUE);
   CheckBox boxz = new CheckBox("BoxId");
   boxz.add(new AjaxFormComponentUpdatingBehavior("onchange")
		{
			@Override
			protected void onUpdate(AjaxRequestTarget target) {
				if (boxz.getModelObject())
				{
					getGenericModelObject().setValues(SomeEnum.SECONDVALUE);
					get("dropDownId").setEnabled(false);
					target.addComponent(get("dropDownId"));
				}
				else
				{
					get("dropDownId").setEnabled(true);
					target.addComponent(get("dropDownId"));
				}
			}
			@Override
			protected void onError(AjaxRequestTarget target, RuntimeException e) {
				if (boxz.getModelObject())
				{
					getGenericModelObject().setValues(SomeEnum.SECONDVALUE);
					get("dropDownId").setEnabled(false);
					target.addComponent(get("dropDownId"));
				}
				else
				{
					get("dropDownId").setEnabled(true);
					target.addComponent(get("dropDownId"));
				}
				super.onError(target, e);
			}
		});
     Form form = new Form("formId", getGenericModel());
     form.add(dropDownz);
     form.add(boxz);

So as I said, after form validation, if errors occur, it won`t change
dropdown to SECONDVALUE, but sets it as setEnabled(false), why this happens?

--
View this message in context: http://apache-wicket.1842946.n4.nabble.com/AjaxFormComponentUpdatingBehavior-after-validation-problem-tp4477705p4477705.html
Sent from the Users forum mailing list archive at Nabble.com.

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


Re: AjaxFormComponentUpdatingBehavior after validation problem

Posted by Gytis <li...@mail.ru>.
Hello, here I renew this thread, because this problem is still cannot be
resolved.
So problem is that when you have AjaxFormComponentUpdatingBehaviour it works
fine, until that moment, when you try to submit your form. So when you get
error, that some kind of value is not as it is not supposed to be, all of
this AjaxBehaviour starts working kinda strange, it doesn`t update Models...
What can solve this problem?


--
View this message in context: http://apache-wicket.1842946.n4.nabble.com/AjaxFormComponentUpdatingBehavior-after-validation-problem-tp4477705p4592316.html
Sent from the Users forum mailing list archive at Nabble.com.

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


RE: AjaxFormComponentUpdatingBehavior after validation problem

Posted by Evan Sable <ev...@novelution.com>.
Hello,

I think the problem is just that you're calling setValues on your
"genericModelObject", which is set as the compoundpropertymodel for your
form, but you're not adding the form back to the ajax response - with the
AjaxRequestTarget, you're only adding the component "dropDownId" to get
re-rendered into the page, not the form with the updated model.  So, the
change made directly on the dropdown which is added to the ajaxRequestTarget
(calling setEnabled) is taking effect, but it's not finding the updated
model.  It should work if you add:
target.addComponent(get("formId"));

Hope that helps,
-Evan

-----Original Message-----
From: Gytis [mailto:lietuviss66@mail.ru] 
Sent: Friday, March 16, 2012 5:32 AM
To: users@wicket.apache.org
Subject: AjaxFormComponentUpdatingBehavior after validation problem

Hello, I have such a problem with AjaxFormComponentUpdatingBehavior. 
I have some DropDownChoice and a CheckBox on a Form. I need to make a change
to DropDown, when I click on CheckBox. But as I try to submit a Form, got
some error, and then click CheckBox DropDown doesn`t change. The code looks
like this: 

   DropDownChoice<SomeEnum> dropDownz = new
DropDownChoice<SomeEnum>("dropDownId",
			Arrays.asList(SomeEnum.values()), new
EnumChoiceRenderer<SomeEnum>(this));
   getGenericModelObject().setValues(SomeEnum.FIRSTVALUE);
   CheckBox boxz = new CheckBox("BoxId");
   boxz.add(new AjaxFormComponentUpdatingBehavior("onchange")
		{
			@Override
			protected void onUpdate(AjaxRequestTarget target) {
				if (boxz.getModelObject())
				{
	
getGenericModelObject().setValues(SomeEnum.SECONDVALUE);
					get("dropDownId").setEnabled(false);
	
target.addComponent(get("dropDownId"));
				}
				else
				{
					get("dropDownId").setEnabled(true);
	
target.addComponent(get("dropDownId"));
				}
			}
			@Override
			protected void onError(AjaxRequestTarget target,
RuntimeException e) {
				if (boxz.getModelObject())
				{
	
getGenericModelObject().setValues(SomeEnum.SECONDVALUE);
					get("dropDownId").setEnabled(false);
	
target.addComponent(get("dropDownId"));
				}
				else
				{
					get("dropDownId").setEnabled(true);
	
target.addComponent(get("dropDownId"));
				}
				super.onError(target, e);
			}
		});
     Form form = new Form("formId", getGenericModel());
     form.add(dropDownz);
     form.add(boxz);

So as I said, after form validation, if errors occur, it won`t change
dropdown to SECONDVALUE, but sets it as setEnabled(false), why this happens?

--
View this message in context:
http://apache-wicket.1842946.n4.nabble.com/AjaxFormComponentUpdatingBehavior
-after-validation-problem-tp4477705p4477705.html
Sent from the Users forum mailing list archive at Nabble.com.



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


RE: AjaxFormComponentUpdatingBehavior after validation problem

Posted by Michal Wegrzyn <mi...@onior.com>.
Hi Gytis,

If you add AjaxFormSubmitBehaviour to your checkbox it should work exactly as "Submit" button.

Best regards,
Michal Wegrzyn

> -----Original Message-----
> From: Gytis [mailto:lietuviss66@mail.ru]
> Sent: Sunday, March 18, 2012 8:02
> To: users@wicket.apache.org
> Subject: RE: AjaxFormComponentUpdatingBehavior after validation problem
> 
> Hello, Michal,
> Well, I`ve tried to make an AjaxFormSubmitBehaviour, but this doesn`t
> help, in fact it is updating component, when you click "Submit" button,
> and I need it updated, when clicking checkBox.
> I`ve tried to add both Ajax behaviours, still doesn`t work. Wanted to
> add some details on my code, for form submitting I use AjaxButton...
> 
> --
> View this message in context: http://apache-
> wicket.1842946.n4.nabble.com/AjaxFormComponentUpdatingBehavior-after-
> validation-problem-tp4477705p4481742.html
> Sent from the Users forum mailing list archive at Nabble.com.
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org


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


RE: AjaxFormComponentUpdatingBehavior after validation problem

Posted by Gytis <li...@mail.ru>.
Hello, Michal,
Well, I`ve tried to make an AjaxFormSubmitBehaviour, but this doesn`t help,
in fact it is updating component, when you click "Submit" button, and I need
it updated, when clicking checkBox.
I`ve tried to add both Ajax behaviours, still doesn`t work. Wanted to add
some details on my code, for form submitting I use AjaxButton...

--
View this message in context: http://apache-wicket.1842946.n4.nabble.com/AjaxFormComponentUpdatingBehavior-after-validation-problem-tp4477705p4481742.html
Sent from the Users forum mailing list archive at Nabble.com.

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


RE: AjaxFormComponentUpdatingBehavior after validation problem

Posted by Michal Wegrzyn <mi...@onior.com>.
You can try using AjaxFormSubmitBehavior instead of AjaxFormComponentUpdatingBehavior.

Compare 

org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior.onEvent(AjaxRequestTarget target)

and

org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent(AjaxRequestTarget target)

Best regards,
Michal Wegrzyn

> -----Original Message-----
> From: Gytis [mailto:lietuviss66@mail.ru]
> Sent: Friday, March 16, 2012 13:13
> To: users@wicket.apache.org
> Subject: RE: AjaxFormComponentUpdatingBehavior after validation problem
> 
> Hi, Michal, I`ve tried AjaxCheckBox component, but problem is the same.
> I even made Sytem.out.println() of what object is set in DropDown, it
> shows that Object is SECONDVALUE, but still shows me FIRSTVALUE. Both
> dropDownz and CheckBox OutputMarkupId set to true.
> 
> --
> View this message in context: http://apache-
> wicket.1842946.n4.nabble.com/AjaxFormComponentUpdatingBehavior-after-
> validation-problem-tp4477705p4478018.html
> Sent from the Users forum mailing list archive at Nabble.com.
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org


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


RE: AjaxFormComponentUpdatingBehavior after validation problem

Posted by Gytis <li...@mail.ru>.
Hi, Michal, I`ve tried AjaxCheckBox component, but problem is the same.
I even made Sytem.out.println() of what object is set in DropDown, it shows
that Object is SECONDVALUE, but still shows me FIRSTVALUE. Both dropDownz
and CheckBox OutputMarkupId set to true.

--
View this message in context: http://apache-wicket.1842946.n4.nabble.com/AjaxFormComponentUpdatingBehavior-after-validation-problem-tp4477705p4478018.html
Sent from the Users forum mailing list archive at Nabble.com.

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


RE: AjaxFormComponentUpdatingBehavior after validation problem

Posted by Michal Wegrzyn <mi...@onior.com>.
Hi,

Did you try using AjaxCheckBox instead of CheckBox with ajax behavior?

Best regards,
Michal Wegrzyn

> -----Original Message-----
> From: Gytis [mailto:lietuviss66@mail.ru]
> Sent: Friday, March 16, 2012 10:32
> To: users@wicket.apache.org
> Subject: AjaxFormComponentUpdatingBehavior after validation problem
> 
> Hello, I have such a problem with AjaxFormComponentUpdatingBehavior.
> I have some DropDownChoice and a CheckBox on a Form. I need to make a
> change to DropDown, when I click on CheckBox. But as I try to submit a
> Form, got some error, and then click CheckBox DropDown doesn`t change.
> The code looks like this:
> 
>    DropDownChoice<SomeEnum> dropDownz = new
> DropDownChoice<SomeEnum>("dropDownId",
> 			Arrays.asList(SomeEnum.values()), new
> EnumChoiceRenderer<SomeEnum>(this));
>    getGenericModelObject().setValues(SomeEnum.FIRSTVALUE);
>    CheckBox boxz = new CheckBox("BoxId");
>    boxz.add(new AjaxFormComponentUpdatingBehavior("onchange")
> 		{
> 			@Override
> 			protected void onUpdate(AjaxRequestTarget target) {
> 				if (boxz.getModelObject())
> 				{
> 
> 	getGenericModelObject().setValues(SomeEnum.SECONDVALUE);
> 					get("dropDownId").setEnabled(false);
> 					target.addComponent(get("dropDownId"));
> 				}
> 				else
> 				{
> 					get("dropDownId").setEnabled(true);
> 					target.addComponent(get("dropDownId"));
> 				}
> 			}
> 			@Override
> 			protected void onError(AjaxRequestTarget target,
> RuntimeException e) {
> 				if (boxz.getModelObject())
> 				{
> 
> 	getGenericModelObject().setValues(SomeEnum.SECONDVALUE);
> 					get("dropDownId").setEnabled(false);
> 					target.addComponent(get("dropDownId"));
> 				}
> 				else
> 				{
> 					get("dropDownId").setEnabled(true);
> 					target.addComponent(get("dropDownId"));
> 				}
> 				super.onError(target, e);
> 			}
> 		});
>      Form form = new Form("formId", getGenericModel());
>      form.add(dropDownz);
>      form.add(boxz);
> 
> So as I said, after form validation, if errors occur, it won`t change
> dropdown to SECONDVALUE, but sets it as setEnabled(false), why this
> happens?
> 
> --
> View this message in context: http://apache-
> wicket.1842946.n4.nabble.com/AjaxFormComponentUpdatingBehavior-after-
> validation-problem-tp4477705p4477705.html
> Sent from the Users forum mailing list archive at Nabble.com.
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org


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