做struts2校验的测试实验的时候,出了点小bug,直接贴出注意点:
1.<ActionClassName>-validation.xml必须要在Action的类路径下面,直接放入到classpath下不可以
2.validation xml的头文件格式必须写,而且还要写正确,第一次直接copy的references,注释了头文件,结果死活不对,郁闷死了,这句话必须写在校验文件里面:
<!DOCTYPE validators PUBLIC "-//OpenSymphonyGroup//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
校验步骤:
第一步:添加一个校验文件,HelloAction-validation.xml
<!DOCTYPE validators PUBLIC "-//OpenSymphonyGroup//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="user.name">
<field-validator type="requiredstring">
<message>You must enter a name</message>
</field-validator>
</field>
<field name="user.age">
<field-validator type="int">
<param name="min">13</param>
<param name="max">19</param>
<message>Only people ages 13 to 19 may take this quiz</message>
</field-validator>
</field>
</validators>
第二步:Action肯定少不了了
package com.struts;
import com.model.User;
import com.opensymphony.xwork2.ActionSupport;
import com.zizhu.P;
public class HelloAction extends ActionSupport {
private User user = null;
public String execute(){
P.println(user);
return SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
第三步:输入页面也在所难免:
<s:form action="hello">
<s:textfield label="姓名" name="user.name"></s:textfield>
<s:textfield label="年龄" name="user.age"></s:textfield>
<s:submit></s:submit>
</s:form>
第四步:配置struts.xml,此处需要注意,struts中必须配置input返回视图,否则会报错;
官方的解释是这样的:If you don't have this, you'll get a: "No result defined for action xxx.xxx.tutorial.HellowWorld and result input" error
<action name="hello" class="com.struts.HelloAction">
<result>/index.jsp</result>
<result name="input">/hello_input.jsp</result>
</action>
详细了解,可到这里逛逛: http://blog.csdn.net/jadyer/article/details/6176122#comments