0

我正在制作注册表。

我需要检查两个密码字段是否相同。

<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)未定义。

4

1 回答 1

0

您的确切 Struts 版本是什么?至少根据Struts 1.1 API 文档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));
于 2011-04-19T05:32:17.940 回答