如何在Struts 2中验证两个字段(如密码)并确认密码? [英] How can I validate two fields like password and confirm password in Struts 2?
问题描述
我正在做Web应用程序,因为我想验证JSP表单中的两个字段.在注册申请中,我有很多字段.为此,我要验证密码并确认密码字段.
I am doing web application in that I want to validate two fields in the JSP form. In registration filed I have so many fields. In that I want to validate password and confirm password fields.
以下是我的代码:
操作
类:
Action
Class:
@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;
}
现在,如何验证两个字段包含相同的数据?
Now, how can I validate the two fields contain the same data?
推荐答案
您可以使用非字段自定义验证器来验证任意数量的字段.为此,您应该创建一个扩展了 ValidatorSupport
的自定义验证器,并实现从 Validator
接口继承但没有默认实现的 validate
方法.您应该编写此实现以进行自定义验证.例如,您要创建一个 RetypeValidator
来验证两个字段具有相同的值.看起来像
You could use a non-field custom validator to validate any number of fields. For this purpose you should create a custom validator that extend ValidatorSupport
and implement validate
method which is inherited from Validator
interface but doesn't have default implementation. You should write this implementation to do custom validation. For example you want to create a RetypeValidator
which validates two fields have the same value. It could look like
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
中的配置中:
then you have to add this validator to the configuration in the 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
批注一起使用的自定义验证程序名称.
Now, you have a custom validator name that you could use with @CustomValidator
annotation.
@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}" )})
)
注意,密码
和 conformPassword
是用于验证时解析的OGNL表达式.
Note, password
and conformPassword
are OGNL expressions used to parse when being validated.
这篇关于如何在Struts 2中验证两个字段(如密码)并确认密码?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!