一、简单表单验证示例
structs.xml配置
<struts> <package name="validate" namespace="/validate" extends="struts-default" > <action name="ValidateDemo" class="cn.hjp.validate.ValidateDemo"> <result name="success" type="dispatcher" >/validate/index.jsp</result> <result name="input" type="dispatcher" >/validate/index.jsp</result> </action> </package> </struts>
前端index页面部分代码:fielderror显示错误信息,如果前端页面HTML标签是使用的structs2标签构成,则可以不使用fielderror标签也能显示,如下面注释中代码
<%@ taglib prefix="s" uri="/struts-tags" %> <!-- <body> <s:form action="ValidateDemo" namespace="/validate" > <s:textfield name="name" label="用户名" ></s:textfield> <s:submit value="提交" ></s:submit> </s:form> </body> --> <body> <form action="/struts2-demo/validate/ValidateDemo.action" method="post" > <input type="text" name="name" /><input type="submit" value="提交"/> </form> <s:fielderror fieldName="name" />
<s:actionerror/>
<s:actionmessage/>
</body>
验证判断代码写在validate方法中
public class ValidateDemo extends ActionSupport { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String execute() throws Exception { // TODO Auto-generated method stub System.out.println(this.toString()); return SUCCESS; } @Override public void validate() { // TODO Auto-generated method stub
// 验证字段 if (this.name == null || this.name.equals("")) { addFieldError("name", "姓名不能为空"); }
//验证的不是字段,没有指定字段的验证错误,也就是业务型错误,就根据情况使用下面两个,而前端页面对应添加<s:actionerror/>和<s:actionmessage/>structs2标签元素
addActionError("Action错误");//action错误
addActionMessage("提示信息");//提示信息
}
}
使用structs2的标签构造的HTML元素时,自定义出现类型错误的显示信息
比如<s:textfield name="age" label="年龄"></s:textfield>,后台年龄字段为整数类型,如果填写成了字符类型,则会报错“Invalid field value for field "age"”;
自定义提示错误信息的方式就是在相应的Action包下,新建相应action名称命名的properties文件,文件内制定对应字段及其错误信息,示例如下
ValidateDemo.properties文件,内容invalidate.fieldvalue.age="年龄字段类型错误"