一、使用Action的validate()方法进行验证
使用了struts2框架后,可以在Action类中添加public void validate()方法对数据进行验证,如下所示:
public class TestAction extends ActionSupport{
private String name;
//setter && getter methods....
public String save() throws Exception {
if(hasFieldErrors()){
return INPUT;
}
return SUCCESS;
}
public void validate() {
if (!name.trim().equals("sunny"))
this.addFieldError("msg.name", "请输入正确的用户名.");
}
}
输入页面form.jsp的主要内容:
<body>
<s:fielderror key="msg.name"/>
<s:form action="test!save" name="test">
<s:textfield name="name"></s:textfield>
<s:submit></s:submit>
</s:form>
</body>
struts.xml的相关配置:
<action name="test" class="zz.TestAction">
<result name="input">form.jsp</result>
<result name="success">test.jsp</result>
</action>
<action name="saveMd" class="zz.TestAction" method="save">
<result name="input">formMethod.jsp</result>
<result name="success">test.jsp</result>
</action>
此时,当在form.jsp中输入的内容未通过验证时(即输入的不是sunny),则会在form.jsp中显示提示信息。
二、使用struts2的验证框架
若使用validation框架,则不需要在Action中编写validate方法。
可以为一个Action编写一个验证配置文件,这里的 Action类名为TestAction,则配置文件名为TestAction-validation.xml,即类名-validation.xml的格式,或者为一个Action类中的方法编写一个配置文件,该配置文件的命名格式为类名-Action名-validation.xml,例如为上面的save方法编写一个验证文件,则该文件名为TestAction-saveMd-validation.xml(参考struts.xml文件中的saveMd的配置),这个配置文件的格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="name">
<field-validator type="requiredstring">
<message>请输入姓名</message>
</field-validator>
</field>
</validators>
不需在页面中提供显示错误信息的标签,可以直接显示,测试文件的主要内容:
<s:form action="save" name="test">
<s:textfield name="name" />
<s:submit />
</s:form>
若同时提供了TestAction-validation.xml和TestAction-saveMd-validation.xml配置,将首先使用前一个文件进行检测,然后再根据后一个文件进行检测,可以从页面上显示的结果中看出这点。