用实例说话吧
用户注册Action:
public class RegisterAction extends ActionSupport{
/**
* 用户对象用
*/
private User user;
/**
* 密码重复
*/
private String confirmPassword;
/**
* 验证码
*/
private String vcode;
public String execute(){
//执行业务
userService.save(user);
return Action.SUCCESS;
}
//Field accessories----------------------------------------------------------------
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String getConfirmPassword() {
return confirmPassword;
}
public void setConfirmPassword(String confirmPassword) {
this.confirmPassword = confirmPassword;
}
public String getVcode() {
return vcode;
}
public void setVcode(String vcode) {
this.vcode = vcode;
}
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
}
验证配置文件 RegisterAction-validation.xml
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
<validators>
<field name="user.username">
<field-validator type="requiredstring">
<message key="user.username.empty" />
</field-validator>
</field>
<field name="user.password">
<field-validator type="requiredstring">
<message key="user.password.empty" />
</field-validator>
</field>
<field name="confirmPassword">
<field-validator type="requiredstring" short-circuit="true">
<message key="user.confirmPassword.empty" />
</field-validator>
<field-validator type="registerPM">
<param name="password">user.password</param>
<param name="confirmPassword">confirmPassword</param>
<message key="user.confirmPassword.nomatch" />
</field-validator>
</field>
<field name="user.birthday">
<field-validator type="date">
<message key="user.birthday.empty" />
</field-validator>
</field>
<field name="user.job">
<field-validator type="requiredstring">
<message key="user.job.empty" />
</field-validator>
</field>
<field name="user.mobile">
<field-validator type="requiredstring" short-circuit="true">
<message key="user.mobile.empty" />
</field-validator>
<field-validator type="stringlength">
<param name="minLength">11</param>
<message key="user.mobile.length" />
</field-validator>
</field>
<field name="user.email">
<field-validator type="requiredstring" short-circuit="true">
<message key="user.email.empty" />
</field-validator>
<field-validator type="email">
<message key="user.email.invalid" />
</field-validator>
</field>
<field name="user.height">
<field-validator type="int">
<param name="min">100</param>
<param name="max">300</param>
<message key="user.height.invalid" />
</field-validator>
</field>
<field name="user.weight">
<field-validator type="int">
<param name="min">20</param>
<param name="max">300</param>
<message key="user.weight.invalid" />
</field-validator>
</field>
<field name="user.style">
<field-validator type="requiredstring">
<message key="user.style.empty" />
</field-validator>
</field>
<field name="user.province">
<field-validator type="requiredstring">
<message key="user.province.empty" />
</field-validator>
</field>
<field name="user.city">
<field-validator type="requiredstring">
<message key="user.city.empty" />
</field-validator>
</field>
<field name="user.county">
<field-validator type="requiredstring">
<message key="user.county.empty" />
</field-validator>
</field>
<field name="user.detail">
<field-validator type="requiredstring">
<message key="user.detail.empty" />
</field-validator>
</field>
<field name="vcode">
<field-validator type="requiredstring" short-circuit="true">
<message key="user.vcode.empty" />
</field-validator>
<field-validator type="verificationcodeerror">
<message key="user.vcode.error"></message>
</field-validator>
</field>
</validators>
资源文件RegisterAction.properties
#用户名
user.username.empty=请输入用户名
#密码
user.password.empty=密码不能为空
user.confirmPassword.empty=密码确认不能为空
user.confirmPassword.nomatch=密码输入不一致
#出生年月
user.birthday.empty=请输入出生年月
#职业
user.job.empty=请输入职业
#手机号
user.mobile.empty=请输入手机号
user.mobile.length=手机号无效
#邮箱
user.email.empty=请输入邮箱地址
user.email.invalid=邮箱地址无效
#验证码
user.vcode.empty=请输入验证码
user.vcode.error=验证码错误
因为用到我自定义的验证,需要注册自定义的验证validator/FieldValidator,src目录下新建validator.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator Config 1.0//EN"
"http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd">
<validators>
<!-- START SNIPPET: validators-default -->
<validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>
<validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>
<validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>
<validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/>
<validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/>
<validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>
<validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>
<validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>
<validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>
<validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>
<validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>
<validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>
<validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>
<validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>
<validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>
<validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/>
<validator name="verificationcodeerror" class="com.yuhongtech.website.action.validator.VerificationCodeErrorValidator"/>
<!-- END SNIPPET: validators-default -->
<!--my validators start-->
<validator name="registerPM" class="com.yuhongtech.website.action.validator.RegisterPasswordMatchValidator"></validator>
<!--my validators end-->
</validators>
验证和序部份
public class RegisterPasswordMatchValidator extends FieldValidatorSupport{
private String password;
private String confirmPassword;
@Override
public void validate(Object object) throws ValidationException {
Object pvalue=this.getFieldValue(password, object);
Object cvalue=this.getFieldValue(confirmPassword, object);
if(!pvalue.equals(cvalue)){
this.addFieldError(this.getFieldName(), object);
}
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getConfirmPassword() {
return confirmPassword;
}
public void setConfirmPassword(String confirmPassword) {
this.confirmPassword = confirmPassword;
}
}
public class VerificationCodeErrorValidator extends FieldValidatorSupport{
@Override
public void validate(Object object) throws ValidationException {
HttpSession session=ServletActionContext.getRequest().getSession();
Object obj=session.getAttribute(Constant.VERIFICATION_CODE_SESSION);
String fieldName = getFieldName();
Object value = this.getFieldValue(fieldName, object);
if(!obj.equals(value)){
addFieldError(fieldName, object);
}
}
}