首先,给出包结构截图:
这里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>
效果如下: