You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Jacob Weber <ja...@jacobweber.com> on 2004/06/20 16:26:00 UTC

Two questions: validation

I have two questions on Struts' validation.

1. Let's say I have a multi-page form. Each JSP in the form points to a 
different action (or a different method of a DispatchAction), and passes 
the current "page" value to the action. It's possible for someone to 
pass the wrong value of "page" to an action (e.g. by passing it in the 
URL). This means that someone could call the final action in the 
sequence, pass page=0, and bypass all the validation. What's the 
recommended way to prevent this?

2. I have some validation rules that should only be checked under 
certain conditions. So I'm overriding the ValidatorForm.validate() 
method. Is there a clean way to access Struts' validation functions like 
validateFloat from this method, so I don't have to rewrite them?

Thanks for any help,
Jacob


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: Two questions: validation

Posted by Niall Pemberton <ni...@blueyonder.co.uk>.
1) You could either validate the page number in each of your Actions or in
the ActionForm. If you do it in the ActionForm the validate() method has the
ActionMapping, so you could check if the mapping name ties up with the page
number.

        String action = mapping.getName();
       if (page == 1 && !("/myFirstAction".equals(action)))
           errors.add(...)

Or you could do it in each of your actions in the execute() method...

   public ActionForward execute(ActionMapping mapping,
                                                         ActionForm form,
                                                         HttpServletRequest,

HttpServletResponse) {

         ActionErrors errors = new ActionErrors();
         if (form.getPage() != 4) {
             errors.add();
         }
         saveErrors(request, errors);
         if (errors.size() > 0)
            return mapping.getInputForward();

 }

2) I think it would be a pain to access validator using the Struts
functions - they need it to be configured first, which is done in the XML
file. You could access the Commons Validator functions yourself directly
though:

         Float result = GenericTypeValidator.formatFloat(value);
         if (result == null) {
            errors.add(field.getKey(), Resources.getActionMessage(request,
va, field));
        }

Niall

----- Original Message ----- 
From: "Jacob Weber" <ja...@jacobweber.com>
To: <us...@struts.apache.org>
Sent: Sunday, June 20, 2004 3:26 PM
Subject: Two questions: validation


> I have two questions on Struts' validation.
>
> 1. Let's say I have a multi-page form. Each JSP in the form points to a
> different action (or a different method of a DispatchAction), and passes
> the current "page" value to the action. It's possible for someone to
> pass the wrong value of "page" to an action (e.g. by passing it in the
> URL). This means that someone could call the final action in the
> sequence, pass page=0, and bypass all the validation. What's the
> recommended way to prevent this?
>
> 2. I have some validation rules that should only be checked under
> certain conditions. So I'm overriding the ValidatorForm.validate()
> method. Is there a clean way to access Struts' validation functions like
> validateFloat from this method, so I don't have to rewrite them?
>
> Thanks for any help,
> Jacob
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org