You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Stefan Malmesjö <s....@gmail.com> on 2009/07/01 15:15:45 UTC
Re: ajaxformcomponent
Ok... I think I solved it, but it feels like it's an over complicated
way of doing it... comments?
-------------------
final TextField<String> fromAddress = new TextField<String>("fromAddress");
// fromAddress.add(EmailAddressValidator.getInstance());
fromAddress.add(new AjaxFormComponentUpdatingBehavior("onchange") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
IValidatable<String> fromAddressForValidation = new
IValidatable<String>() {
private boolean isValid = true;
public void error(IValidationError error) {
isValid = false;
}
public String getValue() {
return fromAddress.getValue();
}
public boolean isValid() {
return isValid;
}
};
EmailAddressValidator.getInstance()
.validate(fromAddressForValidation);
if (fromAddressForValidation.isValid()) {
System.out.println("valid!");
} else {
System.out.println("not valid");
}
}
}.setThrottleDelay(Duration.ONE_SECOND));
-------------------
On 2009-06-30 18:15, Stefan Malmesjö wrote:
> The subject should have been AjaxFormComponentUpdatingBehavior...
> sorry about that :-[
>
> On 2009-06-30 18:12, Stefan Malmesjö wrote:
>> Hi,
>>
>> I'm playing around with validation and ajax, and can't quite seem to
>> do what I want. The goal is to have a checkbox toggle
>> enabled/disabled depending on whether the user has entered a valid
>> email address. So, my simple test looks like this:
>>
>> ------------------
>> final TextField<String> fromAddress = new
>> TextField<String>("fromAddress");
>> fromAddress.add(EmailAddressValidator.getInstance());
>>
>> fromAddress.add(new
>> AjaxFormComponentUpdatingBehavior("onchange") {
>>
>> @Override
>> protected void onUpdate(AjaxRequestTarget target) {
>> if (fromAddress.isValid()) {
>> System.out.println("valid");
>> } else {
>> System.out.println("not valid");
>> }
>> }
>> }.setThrottleDelay(Duration.ONE_SECOND));
>> ----------------
>>
>> If the entered address is valid, then I do get the expected output
>> "valid"
>>
>> But if it's not valid, then I get a warning message:
>>
>> --------------
>> WARN - WebSession - Component-targetted feedback
>> message was left unrendered. This could be because you are missing a
>> FeedbackPanel on the page. Message: [FeedbackMessage message =
>> "'asdsfg@l' is not a valid email address.", reporter = fromAddress,
>> level = ERROR]
>> ------------
>>
>> I do have a feedbackpanel on the page (if I submit the form, then I
>> get the "asdsfg@l is not a valid email address" output there).
>>
>> However, I really don't want the error message being output during
>> the ajax process, I just want to see if it's valid, and then
>> enable/disable the checkbox accordingly.
>>
>> I also tried playing with AjaxEventBehavior instead of
>> AjaxFormComponentUpdatingBehavior, but then the value of the input
>> field always is null, and hence valid :) I tried using
>> fromAddress.inputChanged, but that made no difference that I could see.
>>
>> I'm sure I'm making some stupid mistake. Can anyone guide me in the
>> right direction?
>>
>> /Stefan
>>
>
Re: ajaxformcomponent
Posted by Stefan Malmesjö <s....@gmail.com>.
Ok, thanks!
/stefan
On 2009-07-01 18:46, Igor Vaynberg wrote:
> my point was that what you want is equivalent to
>
> final TextField<String> fromAddress = new TextField<String>("fromAddress");
> fromAddress.add(EmailAddressValidator.getInstance());
>
> fromAddress.add(new AjaxFormComponentUpdatingBehavior("onchange") {
>
> @Override
> protected void onUpdate(AjaxRequestTarget target) {
> System.out.println("valid!");
> }
>
> @Override
> protected void onError(AjaxRequestTarget target) {
> System.out.println("not valid!");
> }
>
> }.setThrottleDelay(Duration.ONE_SECOND));
>
> -igor
>
> 2009/7/1 Stefan Malmesjö<s....@gmail.com>:
>
>> Because I'm stubborn, and wanted to get the "send" button (and a checkbox)
>> enabled via ajax only when the user has entered the right data in the form.
>>
>> The only way I seem to be able to do that is in the way below.
>>
>> But on the other hand I'm starting to think that might not be a good way to
>> do things. The user gets no real good feedback as to *why* the
>> button/checkbox is not enabled if I do it that way...
>>
>> /Stefan
>>
>> On 2009-07-01 16:55, Igor Vaynberg wrote:
>>
>>> not sure why you are going through all that. add the validator.
>>> behavior#onupdate() will be called when validation passes and the
>>> model is updated, behavior#onerror() will be called if there is an
>>> error.
>>>
>>> -igor
>>>
>>> 2009/7/1 Stefan Malmesjö<s....@gmail.com>:
>>>
>>>
>>>> Ok... I think I solved it, but it feels like it's an over complicated way
>>>> of
>>>> doing it... comments?
>>>>
>>>> -------------------
>>>> final TextField<String> fromAddress = new
>>>> TextField<String>("fromAddress");
>>>> // fromAddress.add(EmailAddressValidator.getInstance());
>>>>
>>>>
>>>>
>>>> fromAddress.add(new AjaxFormComponentUpdatingBehavior("onchange")
>>>> {
>>>>
>>>> @Override
>>>> protected void onUpdate(AjaxRequestTarget target) {
>>>> IValidatable<String> fromAddressForValidation = new
>>>> IValidatable<String>() {
>>>> private boolean isValid = true;
>>>>
>>>> public void error(IValidationError error) {
>>>> isValid = false;
>>>> }
>>>>
>>>> public String getValue() {
>>>> return fromAddress.getValue();
>>>> }
>>>>
>>>> public boolean isValid() {
>>>> return isValid;
>>>> }
>>>> };
>>>> EmailAddressValidator.getInstance()
>>>> .validate(fromAddressForValidation);
>>>> if (fromAddressForValidation.isValid()) {
>>>> System.out.println("valid!");
>>>> } else {
>>>> System.out.println("not valid");
>>>> }
>>>> }
>>>> }.setThrottleDelay(Duration.ONE_SECOND));
>>>>
>>>>
>>>> -------------------
>>>>
>>>> On 2009-06-30 18:15, Stefan Malmesjö wrote:
>>>>
>>>>
>>>>> The subject should have been AjaxFormComponentUpdatingBehavior... sorry
>>>>> about that :-[
>>>>>
>>>>> On 2009-06-30 18:12, Stefan Malmesjö wrote:
>>>>>
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I'm playing around with validation and ajax, and can't quite seem to do
>>>>>> what I want. The goal is to have a checkbox toggle enabled/disabled
>>>>>> depending on whether the user has entered a valid email address. So, my
>>>>>> simple test looks like this:
>>>>>>
>>>>>> ------------------
>>>>>> final TextField<String> fromAddress = new
>>>>>> TextField<String>("fromAddress");
>>>>>> fromAddress.add(EmailAddressValidator.getInstance());
>>>>>>
>>>>>> fromAddress.add(new
>>>>>> AjaxFormComponentUpdatingBehavior("onchange")
>>>>>> {
>>>>>>
>>>>>> @Override
>>>>>> protected void onUpdate(AjaxRequestTarget target) {
>>>>>> if (fromAddress.isValid()) {
>>>>>> System.out.println("valid");
>>>>>> } else {
>>>>>> System.out.println("not valid");
>>>>>> }
>>>>>> }
>>>>>> }.setThrottleDelay(Duration.ONE_SECOND));
>>>>>> ----------------
>>>>>>
>>>>>> If the entered address is valid, then I do get the expected output
>>>>>> "valid"
>>>>>>
>>>>>> But if it's not valid, then I get a warning message:
>>>>>>
>>>>>> --------------
>>>>>> WARN - WebSession - Component-targetted feedback
>>>>>> message
>>>>>> was left unrendered. This could be because you are missing a
>>>>>> FeedbackPanel
>>>>>> on the page. Message: [FeedbackMessage message = "'asdsfg@l' is not a
>>>>>> valid
>>>>>> email address.", reporter = fromAddress, level = ERROR]
>>>>>> ------------
>>>>>>
>>>>>> I do have a feedbackpanel on the page (if I submit the form, then I get
>>>>>> the "asdsfg@l is not a valid email address" output there).
>>>>>>
>>>>>> However, I really don't want the error message being output during the
>>>>>> ajax process, I just want to see if it's valid, and then enable/disable
>>>>>> the
>>>>>> checkbox accordingly.
>>>>>>
>>>>>> I also tried playing with AjaxEventBehavior instead of
>>>>>> AjaxFormComponentUpdatingBehavior, but then the value of the input
>>>>>> field
>>>>>> always is null, and hence valid :) I tried using
>>>>>> fromAddress.inputChanged,
>>>>>> but that made no difference that I could see.
>>>>>>
>>>>>> I'm sure I'm making some stupid mistake. Can anyone guide me in the
>>>>>> right
>>>>>> direction?
>>>>>>
>>>>>> /Stefan
>>>>>>
>>>>>>
>>>>>>
>>>>
>>> ---------------------------------------------------------------------
>>> 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: ajaxformcomponent
Posted by Igor Vaynberg <ig...@gmail.com>.
my point was that what you want is equivalent to
final TextField<String> fromAddress = new TextField<String>("fromAddress");
fromAddress.add(EmailAddressValidator.getInstance());
fromAddress.add(new AjaxFormComponentUpdatingBehavior("onchange") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
System.out.println("valid!");
}
@Override
protected void onError(AjaxRequestTarget target) {
System.out.println("not valid!");
}
}.setThrottleDelay(Duration.ONE_SECOND));
-igor
2009/7/1 Stefan Malmesjö <s....@gmail.com>:
> Because I'm stubborn, and wanted to get the "send" button (and a checkbox)
> enabled via ajax only when the user has entered the right data in the form.
>
> The only way I seem to be able to do that is in the way below.
>
> But on the other hand I'm starting to think that might not be a good way to
> do things. The user gets no real good feedback as to *why* the
> button/checkbox is not enabled if I do it that way...
>
> /Stefan
>
> On 2009-07-01 16:55, Igor Vaynberg wrote:
>>
>> not sure why you are going through all that. add the validator.
>> behavior#onupdate() will be called when validation passes and the
>> model is updated, behavior#onerror() will be called if there is an
>> error.
>>
>> -igor
>>
>> 2009/7/1 Stefan Malmesjö<s....@gmail.com>:
>>
>>>
>>> Ok... I think I solved it, but it feels like it's an over complicated way
>>> of
>>> doing it... comments?
>>>
>>> -------------------
>>> final TextField<String> fromAddress = new
>>> TextField<String>("fromAddress");
>>> // fromAddress.add(EmailAddressValidator.getInstance());
>>>
>>>
>>>
>>> fromAddress.add(new AjaxFormComponentUpdatingBehavior("onchange")
>>> {
>>>
>>> @Override
>>> protected void onUpdate(AjaxRequestTarget target) {
>>> IValidatable<String> fromAddressForValidation = new
>>> IValidatable<String>() {
>>> private boolean isValid = true;
>>>
>>> public void error(IValidationError error) {
>>> isValid = false;
>>> }
>>>
>>> public String getValue() {
>>> return fromAddress.getValue();
>>> }
>>>
>>> public boolean isValid() {
>>> return isValid;
>>> }
>>> };
>>> EmailAddressValidator.getInstance()
>>> .validate(fromAddressForValidation);
>>> if (fromAddressForValidation.isValid()) {
>>> System.out.println("valid!");
>>> } else {
>>> System.out.println("not valid");
>>> }
>>> }
>>> }.setThrottleDelay(Duration.ONE_SECOND));
>>>
>>>
>>> -------------------
>>>
>>> On 2009-06-30 18:15, Stefan Malmesjö wrote:
>>>
>>>>
>>>> The subject should have been AjaxFormComponentUpdatingBehavior... sorry
>>>> about that :-[
>>>>
>>>> On 2009-06-30 18:12, Stefan Malmesjö wrote:
>>>>
>>>>>
>>>>> Hi,
>>>>>
>>>>> I'm playing around with validation and ajax, and can't quite seem to do
>>>>> what I want. The goal is to have a checkbox toggle enabled/disabled
>>>>> depending on whether the user has entered a valid email address. So, my
>>>>> simple test looks like this:
>>>>>
>>>>> ------------------
>>>>> final TextField<String> fromAddress = new
>>>>> TextField<String>("fromAddress");
>>>>> fromAddress.add(EmailAddressValidator.getInstance());
>>>>>
>>>>> fromAddress.add(new
>>>>> AjaxFormComponentUpdatingBehavior("onchange")
>>>>> {
>>>>>
>>>>> @Override
>>>>> protected void onUpdate(AjaxRequestTarget target) {
>>>>> if (fromAddress.isValid()) {
>>>>> System.out.println("valid");
>>>>> } else {
>>>>> System.out.println("not valid");
>>>>> }
>>>>> }
>>>>> }.setThrottleDelay(Duration.ONE_SECOND));
>>>>> ----------------
>>>>>
>>>>> If the entered address is valid, then I do get the expected output
>>>>> "valid"
>>>>>
>>>>> But if it's not valid, then I get a warning message:
>>>>>
>>>>> --------------
>>>>> WARN - WebSession - Component-targetted feedback
>>>>> message
>>>>> was left unrendered. This could be because you are missing a
>>>>> FeedbackPanel
>>>>> on the page. Message: [FeedbackMessage message = "'asdsfg@l' is not a
>>>>> valid
>>>>> email address.", reporter = fromAddress, level = ERROR]
>>>>> ------------
>>>>>
>>>>> I do have a feedbackpanel on the page (if I submit the form, then I get
>>>>> the "asdsfg@l is not a valid email address" output there).
>>>>>
>>>>> However, I really don't want the error message being output during the
>>>>> ajax process, I just want to see if it's valid, and then enable/disable
>>>>> the
>>>>> checkbox accordingly.
>>>>>
>>>>> I also tried playing with AjaxEventBehavior instead of
>>>>> AjaxFormComponentUpdatingBehavior, but then the value of the input
>>>>> field
>>>>> always is null, and hence valid :) I tried using
>>>>> fromAddress.inputChanged,
>>>>> but that made no difference that I could see.
>>>>>
>>>>> I'm sure I'm making some stupid mistake. Can anyone guide me in the
>>>>> right
>>>>> direction?
>>>>>
>>>>> /Stefan
>>>>>
>>>>>
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> 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: ajaxformcomponent
Posted by Stefan Malmesjö <s....@gmail.com>.
Because I'm stubborn, and wanted to get the "send" button (and a
checkbox) enabled via ajax only when the user has entered the right data
in the form.
The only way I seem to be able to do that is in the way below.
But on the other hand I'm starting to think that might not be a good way
to do things. The user gets no real good feedback as to *why* the
button/checkbox is not enabled if I do it that way...
/Stefan
On 2009-07-01 16:55, Igor Vaynberg wrote:
> not sure why you are going through all that. add the validator.
> behavior#onupdate() will be called when validation passes and the
> model is updated, behavior#onerror() will be called if there is an
> error.
>
> -igor
>
> 2009/7/1 Stefan Malmesjö<s....@gmail.com>:
>
>> Ok... I think I solved it, but it feels like it's an over complicated way of
>> doing it... comments?
>>
>> -------------------
>> final TextField<String> fromAddress = new TextField<String>("fromAddress");
>> // fromAddress.add(EmailAddressValidator.getInstance());
>>
>>
>>
>> fromAddress.add(new AjaxFormComponentUpdatingBehavior("onchange") {
>>
>> @Override
>> protected void onUpdate(AjaxRequestTarget target) {
>> IValidatable<String> fromAddressForValidation = new
>> IValidatable<String>() {
>> private boolean isValid = true;
>>
>> public void error(IValidationError error) {
>> isValid = false;
>> }
>>
>> public String getValue() {
>> return fromAddress.getValue();
>> }
>>
>> public boolean isValid() {
>> return isValid;
>> }
>> };
>> EmailAddressValidator.getInstance()
>> .validate(fromAddressForValidation);
>> if (fromAddressForValidation.isValid()) {
>> System.out.println("valid!");
>> } else {
>> System.out.println("not valid");
>> }
>> }
>> }.setThrottleDelay(Duration.ONE_SECOND));
>>
>>
>> -------------------
>>
>> On 2009-06-30 18:15, Stefan Malmesjö wrote:
>>
>>> The subject should have been AjaxFormComponentUpdatingBehavior... sorry
>>> about that :-[
>>>
>>> On 2009-06-30 18:12, Stefan Malmesjö wrote:
>>>
>>>> Hi,
>>>>
>>>> I'm playing around with validation and ajax, and can't quite seem to do
>>>> what I want. The goal is to have a checkbox toggle enabled/disabled
>>>> depending on whether the user has entered a valid email address. So, my
>>>> simple test looks like this:
>>>>
>>>> ------------------
>>>> final TextField<String> fromAddress = new
>>>> TextField<String>("fromAddress");
>>>> fromAddress.add(EmailAddressValidator.getInstance());
>>>>
>>>> fromAddress.add(new AjaxFormComponentUpdatingBehavior("onchange")
>>>> {
>>>>
>>>> @Override
>>>> protected void onUpdate(AjaxRequestTarget target) {
>>>> if (fromAddress.isValid()) {
>>>> System.out.println("valid");
>>>> } else {
>>>> System.out.println("not valid");
>>>> }
>>>> }
>>>> }.setThrottleDelay(Duration.ONE_SECOND));
>>>> ----------------
>>>>
>>>> If the entered address is valid, then I do get the expected output
>>>> "valid"
>>>>
>>>> But if it's not valid, then I get a warning message:
>>>>
>>>> --------------
>>>> WARN - WebSession - Component-targetted feedback message
>>>> was left unrendered. This could be because you are missing a FeedbackPanel
>>>> on the page. Message: [FeedbackMessage message = "'asdsfg@l' is not a valid
>>>> email address.", reporter = fromAddress, level = ERROR]
>>>> ------------
>>>>
>>>> I do have a feedbackpanel on the page (if I submit the form, then I get
>>>> the "asdsfg@l is not a valid email address" output there).
>>>>
>>>> However, I really don't want the error message being output during the
>>>> ajax process, I just want to see if it's valid, and then enable/disable the
>>>> checkbox accordingly.
>>>>
>>>> I also tried playing with AjaxEventBehavior instead of
>>>> AjaxFormComponentUpdatingBehavior, but then the value of the input field
>>>> always is null, and hence valid :) I tried using fromAddress.inputChanged,
>>>> but that made no difference that I could see.
>>>>
>>>> I'm sure I'm making some stupid mistake. Can anyone guide me in the right
>>>> direction?
>>>>
>>>> /Stefan
>>>>
>>>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>
Re: ajaxformcomponent
Posted by Igor Vaynberg <ig...@gmail.com>.
not sure why you are going through all that. add the validator.
behavior#onupdate() will be called when validation passes and the
model is updated, behavior#onerror() will be called if there is an
error.
-igor
2009/7/1 Stefan Malmesjö <s....@gmail.com>:
> Ok... I think I solved it, but it feels like it's an over complicated way of
> doing it... comments?
>
> -------------------
> final TextField<String> fromAddress = new TextField<String>("fromAddress");
> // fromAddress.add(EmailAddressValidator.getInstance());
>
>
>
> fromAddress.add(new AjaxFormComponentUpdatingBehavior("onchange") {
>
> @Override
> protected void onUpdate(AjaxRequestTarget target) {
> IValidatable<String> fromAddressForValidation = new
> IValidatable<String>() {
> private boolean isValid = true;
>
> public void error(IValidationError error) {
> isValid = false;
> }
>
> public String getValue() {
> return fromAddress.getValue();
> }
>
> public boolean isValid() {
> return isValid;
> }
> };
> EmailAddressValidator.getInstance()
> .validate(fromAddressForValidation);
> if (fromAddressForValidation.isValid()) {
> System.out.println("valid!");
> } else {
> System.out.println("not valid");
> }
> }
> }.setThrottleDelay(Duration.ONE_SECOND));
>
>
> -------------------
>
> On 2009-06-30 18:15, Stefan Malmesjö wrote:
>>
>> The subject should have been AjaxFormComponentUpdatingBehavior... sorry
>> about that :-[
>>
>> On 2009-06-30 18:12, Stefan Malmesjö wrote:
>>>
>>> Hi,
>>>
>>> I'm playing around with validation and ajax, and can't quite seem to do
>>> what I want. The goal is to have a checkbox toggle enabled/disabled
>>> depending on whether the user has entered a valid email address. So, my
>>> simple test looks like this:
>>>
>>> ------------------
>>> final TextField<String> fromAddress = new
>>> TextField<String>("fromAddress");
>>> fromAddress.add(EmailAddressValidator.getInstance());
>>>
>>> fromAddress.add(new AjaxFormComponentUpdatingBehavior("onchange")
>>> {
>>>
>>> @Override
>>> protected void onUpdate(AjaxRequestTarget target) {
>>> if (fromAddress.isValid()) {
>>> System.out.println("valid");
>>> } else {
>>> System.out.println("not valid");
>>> }
>>> }
>>> }.setThrottleDelay(Duration.ONE_SECOND));
>>> ----------------
>>>
>>> If the entered address is valid, then I do get the expected output
>>> "valid"
>>>
>>> But if it's not valid, then I get a warning message:
>>>
>>> --------------
>>> WARN - WebSession - Component-targetted feedback message
>>> was left unrendered. This could be because you are missing a FeedbackPanel
>>> on the page. Message: [FeedbackMessage message = "'asdsfg@l' is not a valid
>>> email address.", reporter = fromAddress, level = ERROR]
>>> ------------
>>>
>>> I do have a feedbackpanel on the page (if I submit the form, then I get
>>> the "asdsfg@l is not a valid email address" output there).
>>>
>>> However, I really don't want the error message being output during the
>>> ajax process, I just want to see if it's valid, and then enable/disable the
>>> checkbox accordingly.
>>>
>>> I also tried playing with AjaxEventBehavior instead of
>>> AjaxFormComponentUpdatingBehavior, but then the value of the input field
>>> always is null, and hence valid :) I tried using fromAddress.inputChanged,
>>> but that made no difference that I could see.
>>>
>>> I'm sure I'm making some stupid mistake. Can anyone guide me in the right
>>> direction?
>>>
>>> /Stefan
>>>
>>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org