beehive-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Carlin Rogers" <carlin.rog...@gmail.com>
Subject Re: Complex Form Bean Validation
Date Fri, 18 Apr 2008 05:52:02 GMT
If you cannot come up with a the custom validator that works for you,
you can implement a validate() method as you inquired about in your
original post. Just make the super class form bean implement the
org.apache.beehive.netui.pageflow.Validatable interface and write a
general validate() method.

http://beehive.apache.org/docs/1.0.2/netui/apidocs/javadoc/org/apache/beehive/netui/pageflow/Validatable.html

The Validatable interface validate() method would be called when data
is posted to any page flow action that takes the given bean as its
argument (Note, the action needs validation turned on by including the
validationErrorForward in the @Jpf.Action annotation).

Or, if you extend your super class form bean from Struts ActionForm,
you could override its validate() method and it would be called by the
framework.

Kind regards,
Carlin

On Thu, Apr 17, 2008 at 6:21 AM, Phillippe Camus
<Phillippe.Camus@imail.org> wrote:
>
>  Hi Philipp,
>
>  Not sure if that is what you are looking for, but you can create custom
>  validators.
>
>  You need to reference them in a deployment descriptor named
>  "custom-validator-rules.xml":
>
>  <form-validation>
>    <global>
>       <validator name="validateNameIsString"
>             classname="org.foo.portal.utils.customValidator.CustomRules"
>                method="validateNameIsString"
>                   msg="nameIsStringError"
>          methodParams="java.lang.Object,
>                        org.apache.commons.validator.ValidatorAction,
>                        org.apache.commons.validator.Field,
>                        org.apache.struts.action.ActionMessages,
>                        javax.servlet.http.HttpServletRequest,
>                        javax.servlet.ServletContext" >
>       </validator>
>    </global>
>  </form-validation>
>
>  Then in your CustomRules class you would implement your validation
>  method:
>
>  public static boolean validateNameIsString(Object bean, ValidatorAction
>  va, Field field,
>                         ActionMessages errors, HttpServletRequest
>  request,
>                         ServletContext servletContext)
>         {
>
>  You can access the fieds in your FormBeans like this:
>  ValidatorUtil.getValueAsString(bean, field.getProperty());
>
>  And then submit the error for the Netui tags: errors.add(field.getKey(),
>  Resources.getActionError(request, va, field));
>
>  Then in your form bean:
>
>  @Jpf.ValidatableProperty(validateCustomRules = {
>  @Jpf.ValidateCustomRule(rule = "validateNameIsString", messageKey =
>  "nameIsStringError") })
>                 public String getFirstName() {
>                         return firstName;
>                 }
>
>  You can pretty much do whatever you want in the CustomRules class. Hope
>  this helps.
>
>  Best regards,
>
>  Phil
>
>
>
>  -----Original Message-----
>  From: phjardas@gmail.com [mailto:phjardas@gmail.com] On Behalf Of
>  Philipp Jardas
>  Sent: Thursday, April 17, 2008 6:01 AM
>  To: Beehive Users
>  Subject: Re: Complex Form Bean Validation
>
>  Hi Zuber,
>
>  Thanks again for the swift response. However, I am not able to find the
>  base class "TaggedObject" you mentioned, neither in the Beehive nor in
>  the Struts libraries. Are you sure about the name?
>
>  Thanks,
>  <P>
>
>  >  I am not sure if this is correct way to do but you can do that by
>  > creating a  bean class by extending 'TaggedObject' class it has
>  > validate method which  you can override .
>  >
>  >
>  >
>  >  Hope this will help you.
>  >
>  >  Regards,
>  >  Zuber
>  >
>  >
>  >  On 4/17/08, Philipp Jardas <philipp@jardas.de> wrote:
>  >  >
>  >  > Hi Zuber,
>  >  >
>  >  > thanks for your reply, though it didn't catch what I was thinking
>  of.
>  >  > I am, of course, aware of the property annotations. Let me give an
>
>  > > example of what I want to do:
>  >  >
>  >  > public class TestForm {
>  >  > public long getA() { ... }
>  >  > public long getB() { ... }
>  >  >
>  >  > public void validate() {
>  >  >    if (getA() > 3 && getB() < 4) {
>  >  >      // Add error message to B: "Must be smaller than 4 if A is
>  >  > greater than 3".
>  >  >    }
>  >  >
>  >  >    // even more complex validation scenarios...
>  >  > }
>  >  > }
>  >  >
>  >  > How could I possibly do this with annotations that always refer to
>  > a  > single property?
>  >  >
>  >  > Thanks,
>  >  > <P>
>  >  >
>  >  > On Thu, Apr 17, 2008 at 11:32 AM, zubair syed <zuberali@gmail.com>
>  wrote:
>  >  > > Hi Philip ,
>  >  > >
>  >  > >  You can do this my putting validateProperty anotation of every
>  > getter  > of the  > >  property.
>  >  > >
>  >  > >  for ex:
>  >  > >
>  >  > >   @Jpf.ValidatableProperty(validateMaxLength =
>  >  > @Jpf.ValidateMaxLength(chars =
>  >  > >  20, messageKey = "error message you can set"), validateMinLength
>
>  > =  > >  @Jpf.ValidateMinLength(messageKey = "errror message you can
>  > set ",  > chars =  > >  5))  > >  public String getUser_id(){  >
>
>  > return user_id;  > >  }  > >  > >  You can also get help  from
beehive
>
>  > documentation . Hope this will help  > you.
>  >  > >
>  >  > >  Regards,
>  >  > >  Zuber
>  >  > >
>  >  > >
>  >  > >
>  >  > >
>  >  > >
>  >  > >
>  >  > >  On 4/17/08, Philipp Jardas <philipp@jardas.de> wrote:
>  >  > >  >
>  >  > >  > Hi everyone,
>  >  > >  >
>  >  > >  > I hope you might be able to help me with this issue. I want a
>  > form  > >  > bean to perform more complex validation than what is
>  > possible with  > the  > >  > property annotations. Think "if property
>  > A has the value X then  > >  > property B must not be greater than Y".
>  >  > >  >
>  >  > >  > In Struts I would simply override the validate method. How do
>  > I do  > >  > this in Beehive?
>  >  > >  >
>  >  > >  > Thanks for your help,
>  >  > >  > Philipp
>  >  > >  >
>  >  > >
>  >  >
>  >
>
>

Mime
View raw message