做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