You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by burnayev <ma...@roomity.com> on 2005/12/05 17:55:25 UTC
ActionErrors and ActionMessages
I'm trying to validate a sign in form with 2 fileds: email and password. I'm using standard "required" and "email" validators to check the validity of the email. As far as I can tell from the debugger output all the errors are added under org.apache.struts.action.ERROR key like this: org.apache.struts.action.ERROR={email=[errors.required[Email]]} The email should exist in the database so there's a verification in SignInAction for that. If the email doesn't exist I add the respecitve ActionMessage (as ActionError is deprecated): ActionMessages errors = new ActionMessages(); errors.add("email", new ActionMessage("error.login.not.found")); saveMessages(request, errors); This guy is added under org.apache.struts.action.ACTION_MESSAGE key as follows: org.apache.struts.action.ACTION_MESSAGE={email=[error.login.not.found[]]} So, when I want to display both errors near my email input field I have to do this: It doesn't look quite efficient. Here's a bunch of questions: 1. Am I missing a way of telling html:messages to pick up both errors and messages? 2. Am I missing a way of converting standard validation errors to messages so that they are added upder org.apache.struts.action.ACTION_MESSAGE and are picked up by html:messages with message="true"? 3. ValidatorForm.validate returns ActionErrors and is not deprecated. I don't get it. Can someone enlighten me on that? I'm on Struts 1.2.8. Thanks, Borys
Broadband interface (RIA) + mail box saftey = http://Struts_User_List.roomity.com
*Your* clubs, no sign up to read, ad supported; try broadband internet.
Re: ActionErrors and ActionMessages
Posted by Laurie Harper <la...@holoweb.net>.
burnayev wrote:
> I'm trying to validate a sign in form with 2 fileds: email and password. I'm using standard "required" and "email" validators to check the validity of the email. As far as I can tell from the debugger output all the errors are added under org.apache.struts.action.ERROR key like this: org.apache.struts.action.ERROR={email=[errors.required[Email]]} The email should exist in the database so there's a verification in SignInAction for that. If the email doesn't exist I add the respecitve ActionMessage (as ActionError is deprecated): ActionMessages errors = new ActionMessages(); errors.add("email", new ActionMessage("error.login.not.found")); saveMessages(request, errors); This guy is added under org.apache.struts.action.ACTION_MESSAGE key as follows: org.apache.struts.action.ACTION_MESSAGE={email=[error.login.not.found[]]} So, when I want to display both errors near my email input field I have to do this: It doesn't look quite efficient. Here's a bunch of questions: 1. Am I miss
ing a way of telling html:messages to pick up both errors and messages? 2. Am I missing a way of converting standard validation errors to messages so that they are added upder org.apache.struts.action.ACTION_MESSAGE and are picked up by html:messages with message="true"? 3. ValidatorForm.validate returns ActionErrors and is not deprecated. I don't get it. Can someone enlighten me on that? I'm on Struts 1.2.8. Thanks, Borys
When you do this:
ActionMessages errors = new ActionMessages();
errors.add("email", new ActionMessage("error.login.not.found"));
saveMessages(request, errors);
you're storing a regular message, not an error message, which is why
it's in a different place to the other validation errors. See below for
the right way to do it:
> 1. Am I missing a way of telling html:messages to pick up both errors
and messages?
You need to add your messages as errors rather than messages (i.e. you
should be building an ActionErrors, not an ActionMessages). To get your
errors and the errors from validator together, you need to add your
messages to the ActionErrors created by validator, rather than create a
new instance.
So, what you want is something more like
ActionErrors errors = form.validate();
// ... custom validation logic ...
errors.add("email", new ActionMessage("error.login.not.found"));
saveMessages(request, errors);
> 2. Am I missing a way of converting standard validation errors to
messages so that they are added upder
org.apache.struts.action.ACTION_MESSAGE and are picked up by
html:messages with message="true"?
Nope; validation errors result in error messages not regular messages.
> 3. ValidatorForm.validate returns ActionErrors and is not deprecated.
I don't get it. Can someone enlighten me on that? I'm on Struts 1.2.8.
ActionErrors represents a set of error messages. ActionMessages
represents a set of non-error messages. Both types of message are now
represented by the same class, ActionMessage. The deprecated class is
ActionError (not ActionErrors), which is replaced by ActionMessage.
I know, a bit confusing, but hopefully that makes some sort of sense.
L.
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org