STRUTS2 验证框架--WebWork Validation使用笔记

本文详细阐述了用户注册Action的实现方式,包括用户对象、密码重复验证、验证码验证等关键步骤,并通过验证配置文件和资源文件展示了具体的验证规则。

 用实例说话吧

用户注册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);
        }
 } 
}

reference: http://today.java.net/pub/a/today/2006/01/19/webwork-validation.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值