如何在Struts 1中验证密码字段?

时间:2011-04-17 12:57:55

标签: java struts struts-1 struts-validation

我正在办理登记表。

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

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

1 个答案:

答案 0 :(得分:0)

您的确切Struts版本是什么?至少根据Struts 1.1 API documentationResources.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));