Как проверить поле пароля в Struts 1? - PullRequest
0 голосов
/ 17 апреля 2011

Я делаю регистрационную форму.

Мне нужно проверить, совпадают ли оба поля пароля.

<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 голосов
/ 19 апреля 2011

Какая у вас версия Struts? По крайней мере, согласно документации API Struts 1.1 , подпись метода 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));
...