大家在用struts时候,会用到两种校验
第一种:是以xml方式配置(基本上不用),所以不详细说明
第二中:
package com.asiainfo.struts.action;
import com.asiainfo.struts.pojo.Group;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class ValidatorAction extends ActionSupport implements ModelDriven<Group>{
private Group group;
public String validator(){
return "success";
}
/* 验证数据的合法性*/
public String validateModify(){
if("".equals(group.getGroupName())){
this.addFieldError("groupName", "不能为空");
return "input";
}
if(group.getGroupNum()<0){
this.addFieldError("groupNum", "不能小于0");
return "input";
}
return "success";
}
public String modify(){
return "success";
}
public Group getGroup() {
return group;
}
public void setGroup(Group group) {
this.group = group;
}
public Group getModel() {
if(group==null){
group = new Group();
}
return group;
}
}
就是在某个方法执行前,方法名加上validate,就会先执行这个方法,到这里可以做拦截,验证数据的合法性
然后继承ActionSupport的类,里面就有addFieldError这个方法,就可以在里面加入验证的异常信息等等
struts.xml文件的配置:
<action name="*_*" class="com.asiainfo.struts.action.{1}Action" method="{2}">
<result>WEB-INF/{1}/{2}.jsp</result>
<result name="input">WEB-INF/{1}/validator.jsp</result>
<result name="redirect" type="redirect">Login_main.action</result>
</action>
界面:
<s:debug></s:debug>
<s:form action="Validator_modify.action" method="get">
<s:textfield label="组名" name="groupName"></s:textfield>
<s:textfield label="组人数" name="groupNum"></s:textfield>
<s:submit value="登陆"></s:submit>
</s:form>
这里用的struts自带的标签,也可以不用这个,直接用原始标签,但是,需要加入<s:fielderror></s:fielderror>
这样才能将异常信息,展示在前台
测试结果: