Struts2的validate方法及验证框架
?
一、使用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" 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配置,将首先使用前一个文件进行检测,然后再根据后一个文件进行检测,可以从页面上显示的结果中看出这点。
?