天天看點

struts2 validation 校驗

做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

繼續閱讀