做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