beehive-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Phillippe Camus" <Phillippe.Ca...@imail.org>
Subject RE: Complex Form Bean Validation
Date Thu, 17 Apr 2008 12:21:23 GMT

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