public class ExampleChecks implements Serializable {
public ExampleChecks() {
super();
}
public static boolean alwaysBad(
Object bean,
ValidatorAction va,
Field field,
ActionMessages errors,
Validator validator,
HttpServletRequest request) {
errors.add(field.getKey(),
Resources.getActionMessage(request, va, field));
return false;
}
}
<validator name="bad"
classname="com.snail.ExampleChecks"
method="alwaysBad"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.bad"/>errors.bad={0} is always bad.<form name="ExampleForm">
<field
property="value"
depends="bad">
<arg key="label.value"/>
</field>
</form> public class ExampleChecks implements Serializable {
public ExampleChecks() {
super();
}
public static boolean alwaysBad(Object bean, ValidatorAction va,
Field field, ActionMessages errors, Validator validator,
HttpServletRequest request) {
errors.add(field.getKey(),
Resources.getActionMessage(request, va, field));
return false;
}
public static boolean onlyOkisOk(Object bean, ValidatorAction va,
Field field, ActionMessages errors, Validator validator,
HttpServletRequest request) throw JSPException {
// 検証対象の切り出し
String str = null;
if( bean instanceof String ){
str = (String)bean;
}else{
try {
str = PropertyUtils.getProperty(bean,field.getProperty()).toString();
} catch (Exception e) {
throw new JspException(e);
}
}
if("Ok".equals(str)){
return true;
}else{
errors.add(field.getKey(),
Resources.getActionMessage(request, va, field));
return false;
}
}
}
<validator name="OkIsOk"
classname="com.snail.ExampleChecks"
method="onlyOkisOk"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.onlyOkisOk"/>errors.onlyOkisOk={0} is only Ok is ok.<form name="ExampleForm">
<field
property="value"
depends="OkIsOk">
<arg key="label.value"/>
</field>
</form> public class ExampleChecks implements Serializable {
public static boolean onlyAnyOneisOk(Object bean, ValidatorAction va,
Field field, ActionMessages errors, Validator validator,
HttpServletRequest request) throws JspException {
// 検証対象の切り出し
String str = null;
if (bean instanceof String) {
str = (String) bean;
} else {
try {
str = PropertyUtils.getProperty(bean, field.getProperty())
.toString();
} catch (Exception e) {
throw new JspException(e);
}
}
// 検証対象がnullか空文字の場合には、検証成功とする
if( str == null || "".equals(str.trim())){
return true;
}
// 候補の読み込み
String candidateList = field.getVarValue("Candidate");
String[] candidates = candidateList.split(",");
for (int cnt = 0; cnt < candidates.length; cnt++) {
if (candidates[cnt].equals(str)) {
return true;
}
}
errors.add(field.getKey(), Resources.getActionMessage(request, va,
field));
return false;
}
}
<validator name="AnyOneIsOk"
classname="com.snail.ExampleChecks"
method="onlyAnyOneisOk"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.AnyOneIsOk"/>errors.AnyOneIsOk={0} must be one of {1}.<form name="ExampleForm">
<field
property="value"
depends="AnyOneIsOk">
<arg0 key="label.value"/>
<arg1 key="${var:Candidate}" resource="false"/>
<var>
<var-name>Candidate</var-name>
<var-value>diamond,perl,ruby,crystal,gold</var-value>
</var>
</field>
</form><!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
<form-validation>
<global>
<validator name="bad"
classname="com.snail.ExampleChecks"
method="alwaysBad"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.bad"/>
<validator name="OkIsOk"
classname="com.snail.ExampleChecks"
method="onlyOkisOk"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.onlyOkisOk"/>
<validator name="AnyOneIsOk"
classname="com.snail.ExampleChecks"
method="onlyAnyOneisOk"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.AnyOneIsOk"/>
</global>
</form-validation> <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml,/WEB-INF/myValidator-rules.xml"/>
</plug-in>□□□□□□□□□□javax.servlet.http.HttpServletRequest"← □□□depends=""← □□□msg="errors.onlyOkisOk"/>← ■■← □□<validator name="AnyOneIsOk"← □□□classname="com.snail.ExampleChecks"← □□□method="onlyAnyOneisOk"← □□□methodParams="java.lang.Object,← □□□□□□□□□□org.apache.commons.validator.ValidatorAction,← □□□□□□□□□□org.apache.commons.validator.Field,← □□□□□□□□□□org.apache.struts.action.ActionMessages,← □□□□□□□□□□org.apache.commons.validator.Validator,← □□□□□□□□□□javax.servlet.http.HttpServletRequest"← □□□depends=""← □□□msg="errors.AnyOneIsOk"/>← ■■← □</global>← (□■:SPC , ←:改行)
□□□□□□□□□□javax.servlet.http.HttpServletRequest"← □□□depends=""← □□□msg="errors.onlyOkisOk"/>← ← □□<validator name="AnyOneIsOk"← □□□classname="com.snail.ExampleChecks"← □□□method="onlyAnyOneisOk"← □□□methodParams="java.lang.Object,← □□□□□□□□□□org.apache.commons.validator.ValidatorAction,← □□□□□□□□□□org.apache.commons.validator.Field,← □□□□□□□□□□org.apache.struts.action.ActionMessages,← □□□□□□□□□□org.apache.commons.validator.Validator,← □□□□□□□□□□javax.servlet.http.HttpServletRequest"← □□□depends=""← □□□msg="errors.AnyOneIsOk"/>← ← □</global>← (□:SPC , ←:改行)