com.opensymphony.xwork.validator.annotations
Annotation Type Validation
@Target(value=TYPE)
@Retention(value=RUNTIME)
public @interface Validation
If you want to use annotation based validation, you have to annotate the class or interface with Validation Annotation.
Annotation usage:
The Validation annotation must be applied at Type level.
Annotation parameters:
Parameter |
Required |
Default |
Notes |
message |
yes |
|
field error message |
key |
no |
|
i18n key from language specific properties file. |
fieldName |
no |
|
|
shortCircuit |
no |
false |
If this validator should be used as shortCircuit. |
type |
yes |
ValidatorType.FIELD |
Enum value from ValidatorType. Either FIELD or SIMPLE can be used here. |
Example code:
An Annotated Interface
@Validation()
public interface AnnotationDataAware {
void setBarObj(Bar b);
Bar getBarObj();
@RequiredFieldValidator(message = "You must enter a value for data.")
@RequiredStringValidator(message = "You must enter a value for data.")
void setData(String data);
String getData();
}
Example code:
An Annotated Class
@Validation()
public class SimpleAnnotationAction extends ActionSupport {
@RequiredFieldValidator(type = ValidatorType.FIELD, message = "You must enter a value for bar.")
@IntRangeFieldValidator(type = ValidatorType.FIELD, min = "6", max = "10", message = "bar must be between ${min} and ${max}, current value is ${bar}.")
public void setBar(int bar) {
this.bar = bar;
}
public int getBar() {
return bar;
}
@Validations(
requiredFields =
{@RequiredFieldValidator(type = ValidatorType.SIMPLE, fieldName = "customfield", message = "You must enter a value for field.")},
requiredStrings =
{@RequiredStringValidator(type = ValidatorType.SIMPLE, fieldName = "stringisrequired", message = "You must enter a value for string.")},
emails =
{ @EmailValidator(type = ValidatorType.SIMPLE, fieldName = "emailaddress", message = "You must enter a value for email.")},
urls =
{ @UrlValidator(type = ValidatorType.SIMPLE, fieldName = "hreflocation", message = "You must enter a value for email.")},
stringLengthFields =
{@StringLengthFieldValidator(type = ValidatorType.SIMPLE, trim = true, minLength="10" , maxLength = "12", fieldName = "needstringlength", message = "You must enter a stringlength.")},
intRangeFields =
{ @IntRangeFieldValidator(type = ValidatorType.SIMPLE, fieldName = "intfield", min = "6", max = "10", message = "bar must be between ${min} and ${max}, current value is ${bar}.")},
dateRangeFields =
{@DateRangeFieldValidator(type = ValidatorType.SIMPLE, fieldName = "datefield", min = "-1", max = "99", message = "bar must be between ${min} and ${max}, current value is ${bar}.")},
expressions = {
@ExpressionValidator(expression = "foo > 1", message = "Foo must be greater than Bar 1. Foo = ${foo}, Bar = ${bar}."),
@ExpressionValidator(expression = "foo > 2", message = "Foo must be greater than Bar 2. Foo = ${foo}, Bar = ${bar}."),
@ExpressionValidator(expression = "foo > 3", message = "Foo must be greater than Bar 3. Foo = ${foo}, Bar = ${bar}."),
@ExpressionValidator(expression = "foo > 4", message = "Foo must be greater than Bar 4. Foo = ${foo}, Bar = ${bar}."),
@ExpressionValidator(expression = "foo > 5", message = "Foo must be greater than Bar 5. Foo = ${foo}, Bar = ${bar}.")
}
)
public String execute() throws Exception {
return SUCCESS;
}
}
- Version:
- $Id: Validation.java 892 2006-03-08 22:04:14 +0100 (Wed, 08 Mar 2006) rainerh $
- Author:
- Rainer Hermanns
validations
public abstract Validations[] validations
- Used for class or interface validation rules.
- Default:
- {}