Как я могу проверить два поля, такие как пароль и verifyPassword в Struts 2?

Я делаю веб-приложение, в котором я хочу проверить два поля в форме JSP. В поле регистрации у меня так много полей. В нем я хочу подтвердить пароль и подтвердить поля пароля.

Ниже мой код:

Код проверки в классе действий Struts2:

@Length(min = 6, max = 20)
@Column(name = "PERSON_PASSWORD", nullable = false, length = 20)
public String getPassword() {
    return password;
}

@Length(min = 6, max = 20)
@Column(name = "PERSON_CONFORMPASSWORD", nullable = false, length = 20)
public String getConformPassword() {
    return conformPassword;
}

Теперь, как я могу проверить, два поля содержат одинаковые данные не?

3 ответа

Вы можете использовать неполевой пользовательский валидатор для проверки любого количества полей. Для этого вы должны создать собственный валидатор, который расширяет ValidatorSupport и реализовать validate метод, который унаследован от Validator интерфейс, но не имеет реализации по умолчанию. Вы должны написать эту реализацию, чтобы выполнить пользовательскую проверку. Например, вы хотите создать RetypeValidator который проверяет два поля имеют одинаковое значение. Это может выглядеть как

public class RetypeValidator extends ValidatorSupport {

  private String value = null;

  public String getValue() {
    return value;
  }
  public void setValue(String value) {
    this.value = value;
  }

  private String retypeValue = null;

  public String getRetypeValue() {
    return retypeValue;
  }

  public void setRetypeValue(String value) {
    retypeValue = value;
  }

  @Override
  public void validate(Object object) throws ValidationException {
    String value = (String) parse(this.value, String.class);
    String retypeValue = (String) parse(this.retypeValue, String.class);
    if (value != null && retypeValue != null && !value.equals(retypeValue))
      addActionError(getDefaultMessage());
  }
}

Затем вы должны добавить этот валидатор в конфигурацию в validators.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator Config 1.0//EN"
        "http://struts.apache.org/dtds/xwork-validator-config-1.0.dtd">

<validators>
  <validator name="retypeValidator" class="org.custom.struts.vaidators.RetypeValidator"/>
</validators>

Теперь у вас есть собственное имя валидатора, которое вы можете использовать с @CustomValidator аннотаций.

@Validations(
    customValidators = @CustomValidator(type="retypeValidator", message="the value and retype value should be the same",
      parameters = { @ValidationParameter( name = "value", value = "${password}" ), @ValidationParameter( name = "retypeValue", value = "${conformPassword}" )})
)

Заметка, password а также conformPassword являются выражениями OGNL, используемыми для анализа при проверке

Вы можете использовать оператор if для сравнения

if(password == conformPassword)
{
    //TO-DO
}
else
{
    //TO-DO
}
if(getPassword().equals(getConformPassword()){
{
//code
}
Другие вопросы по тегам