我正在办理登记表。
我需要检查两个密码字段是否相同。
<validator name="twofields"
classname="com.mysite.StrutsValidator"
method="validateTwoFields"
msg="errors.twofields"/>
<field property="password"
depends="required,twofields">
<arg position="0" key="typeForm.password.displayname"/>
<var>
<var-name>secondProperty</var-name>
<var-value>password2</var-value>
</var>
</field>
方法
public class StrutsValidator {
public static boolean validateTwoFields(
Object bean,
ValidatorAction va,
Field field,
ActionErrors errors,
HttpServletRequest request,
ServletContext application) {
String value = ValidatorUtils.getValueAsString(
bean,
field.getProperty());
String sProperty2 = field.getVarValue("secondProperty");
String value2 = ValidatorUtils.getValueAsString(
bean,
sProperty2);
if (!GenericValidator.isBlankOrNull(value)) {
try {
if (!value.equals(value2)) {
errors.add(field.getKey(),
Resources.getActionError(
application,
request,
va,
field));
return false;
}
}
catch (Exception e) {
errors.add(field.getKey(),
Resources.getActionError( //This line is giving an error.
application,
request,
va,
field));
return false;
}
}
return true;
}
}
我尝试了这个,但它给出了一个错误。对于类型资源,方法getActionError(ServletContext, HttpServletRequest, ValidatorAction, Field)
未定义。
答案 0 :(得分:0)
您的确切Struts版本是什么?至少根据Struts 1.1 API documentation,Resources.getActionError
方法签名如下:
getActionError(
javax.servlet.http.HttpServletRequest request,
org.apache.commons.validator.ValidatorAction va,
org.apache.commons.validator.Field field
)
这表示您需要从方法调用中删除应用程序参数:
errors.add(
field.getKey(),
Resources.getActionError(
request,
va,
field));