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: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]>
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 <[EMAIL PROTECTED]> 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
> > > >
> > >
> >
>