com.opensymphony.xwork2.validator.validators
public class: VisitorFieldValidator [javadoc |
source]
java.lang.Object
com.opensymphony.xwork2.validator.validators.ValidatorSupport
com.opensymphony.xwork2.validator.validators.FieldValidatorSupport
com.opensymphony.xwork2.validator.validators.VisitorFieldValidator
All Implemented Interfaces:
FieldValidator, ShortCircuitableValidator, Validator
Direct Known Subclasses:
ConditionalVisitorFieldValidator
The VisitorFieldValidator allows you to forward validation to object
properties of your action using the object's own validation files. This
allows you to use the ModelDriven development pattern and manage your
validations for your models in one place, where they belong, next to your
model classes. The VisitorFieldValidator can handle either simple Object
properties, Collections of Objects, or Arrays.
- fieldName - field name if plain-validator syntax is used, not needed if field-validator syntax is used
- context - the context of which validation should take place. Optional
- appendPrefix - the prefix to be added to field. Optional
<validators>
<!-- Plain Validator Syntax -->
<validator type="visitor">
<param name="fieldName">user</param>
<param name="context">myContext</param>
<param name="appendPrefix">true</param>
</validator>
<!-- Field Validator Syntax -->
<field name="user">
<field-validator type="visitor">
<param name="context">myContext</param>
<param name="appendPrefix">true</param>
</field-validator>
</field>
</validators>
In the example above, if the acion's getUser() method return User object, XWork
will look for User-myContext-validation.xml for the validators. Since appednPrefix is true,
every field name will be prefixed with 'user' such that if the actual field name for 'name' is
'user.name'
- author:
Jason - Carreira
- author:
Rainer - Hermanns
- version:
$ - Date: 2008-03-28 16:57:30 +0100 (Fri, 28 Mar 2008) $ $Id: VisitorFieldValidator.java 1765 2008-03-28 15:57:30Z rainerh $
| Methods from com.opensymphony.xwork2.validator.validators.ValidatorSupport: |
|---|
|
addActionError, addFieldError, conditionalParse, getDefaultMessage, getFieldValue, getMessage, getMessageKey, getParse, getValidatorContext, getValidatorType, isShortCircuit, setDefaultMessage, setMessageKey, setParse, setShortCircuit, setValidatorContext, setValidatorType, setValueStack |
| Method from com.opensymphony.xwork2.validator.validators.VisitorFieldValidator Detail: |
public String getContext() {
return context;
}
|
public boolean isAppendPrefix() {
return appendPrefix;
}
Flags whether the field name of this field validator should be prepended to the field name of
the visited field to determine the full field name when an error occurs. The default is
true. |
public void setActionValidatorManager(ActionValidatorManager mgr) {
this.actionValidatorManager = mgr;
}
|
public void setAppendPrefix(boolean appendPrefix) {
this.appendPrefix = appendPrefix;
}
Sets whether the field name of this field validator should be prepended to the field name of
the visited field to determine the full field name when an error occurs. The default is
true. |
public void setContext(String context) {
this.context = context;
}
|
public void validate(Object object) throws ValidationException {
String fieldName = getFieldName();
Object value = this.getFieldValue(fieldName, object);
if (value == null) {
log.warn("The visited object is null, VisitorValidator will not be able to handle validation properly. Please make sure the visited object is not null for VisitorValidator to function properly");
return;
}
ValueStack stack = ActionContext.getContext().getValueStack();
stack.push(object);
String visitorContext = (context == null) ? ActionContext.getContext().getName() : context;
if (value instanceof Collection) {
Collection coll = (Collection) value;
Object[] array = coll.toArray();
validateArrayElements(array, fieldName, visitorContext);
} else if (value instanceof Object[]) {
Object[] array = (Object[]) value;
validateArrayElements(array, fieldName, visitorContext);
} else {
validateObject(fieldName, value, visitorContext);
}
stack.pop();
}
|