首先,给出包结构截图:
这里UserAction使用模型驱动:
我们需要对UserAction类中的user_regist方法使用校验规则,校验器命名为:ClassName-[ActionName]-validation.xml
ActionName对应着ClassName中的执行方法,若不填写则表示校验器对ClassName下的所有执行方法都生效。
我们的校验器为:UserAction-user_regist-validation.xml
user_regist 方法如下:
/** * 用户注册的方法 * @return */ public String regist(){ //判断验证码程序 //从session中获得验证码 String checkcode1 = (String) ServletActionContext.getRequest().getSession().getAttribute("checkcode"); if(!checkcode1.equalsIgnoreCase(checkcode)){ this.addActionError("验证码输入错误!"); return "checkCodeFail"; } userService.save(user); this.addActionMessage("注册成功!请去邮箱激活!"); return "msg"; }
UserAction-user_regist-validation.xml 如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> <!-- 校验用户名 --> <field name="username"> <field-validator type="requiredstring"> <message>用户名不能为空!</message> </field-validator> </field> <!-- 校验密码 --> <field name="password"> <field-validator type="requiredstring"> <message>密码不能为空!</message> </field-validator> </field> <!-- 校验邮箱 --> <field name="email"> <field-validator type="email"> <message>邮箱格式不正确!</message> </field-validator> </field> <!-- 校验姓名 --> <field name="name"> <field-validator type="requiredstring"> <message>姓名不能为空!</message> </field-validator> </field> <!-- 校验地址 --> <field name="addr"> <field-validator type="requiredstring"> <message>地址不能为空!</message> </field-validator> </field> </validators>
接下来,在struts.xml中配置校验器的逻辑视图,result name 为input:
<!-- 配置用户模块的Action --> <action name="user_*" class="userAction" method="{1}"> <result name="registPage">/WEB-INF/jsp/regist.jsp</result> <!-- result:input 是user_regist校验规则返回的 --> <result name="input">/WEB-INF/jsp/regist.jsp</result> <result name="loginPage">/WEB-INF/jsp/login.jsp</result> <result name="login">/WEB-INF/jsp/login.jsp</result> <result name="loginSuccess" type="redirectAction">index</result> <result name="quit" type="redirectAction">index</result> <result name="checkCodeFail">/WEB-INF/jsp/regist.jsp</result> </action>
最后,在jsp页面中显示校验信息:
<tr> <th><span class="requiredField">*</span>E-mail:</th> <td><input type="text" id="email" name="email" class="text" maxlength="200"> <span><s:fielderror fieldName="email" /></span> </td> </tr>
效果如下: