Struts2中validate數據校驗的兩種辦法詳解附Struts2經常使用校驗器。本站提示廣大學習愛好者:(Struts2中validate數據校驗的兩種辦法詳解附Struts2經常使用校驗器)文章只能為提供參考,不一定能成為您想要的結果。以下是Struts2中validate數據校驗的兩種辦法詳解附Struts2經常使用校驗器正文
1.Action中的validate()辦法
Struts2供給了一個Validateable接口,這個接口中只存在validate()辦法,完成這個接口的類可直接被Struts2挪用,ActionSupport類就完成了Vadidateable接口,但他的validate()辦法是一個空辦法,須要我們來重寫。
validate()辦法會在execute()辦法履行前履行,僅當數據校驗准確,才履行execute()辦法, 如毛病則將毛病添加到fieldErrors域中,假如界說的Action中存在多個邏輯處置辦法,且分歧的處置邏輯須要分歧的校驗規矩,這類情形下validate()會對一切處置邏輯應用雷同的校驗規矩,為了完成分歧的校驗邏輯,須要經由過程validateX()辦法,個中X表現處置邏輯的辦法名。
Action類:
public class LoginAction extends ActionSupport{ private static final long serialVersionUID = 1L; private String userName; private String userPassword; public String execute(){ System.out.println("execute"); return SUCCESS; } public String login(){ System.out.println("login"); return SUCCESS; } public void validate(){ System.out.println("validata"); } public void validateLogin(){ System.out.println("validatelogin"); if(!(userName.equals("sbw") && userPassword.equals("123"))){ addFieldError("error","wrong info"); } } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserPassword() { return userPassword; } public void setUserPassword(String userPassword) { this.userPassword = userPassword; } }
struts.xml
<package name="main" extends="struts-default"> <global-results> <result name="login">/login.jsp</result> </global-results> <action name="loginPerson" class="com.sbw.test.action.LoginAction" method="login"> <result name="success">/success.jsp</result> <result name="input">/validateLogin.jsp</result> </action> </package>
success.jsp
<body> 登錄勝利 <s:property value="account"/> </body>
validateLogin.jsp
<body> <s:fielderror/> </body>
運轉成果(第一次測試准確,第二次測試毛病)
2.經由過程XWork校驗框架
應用validate辦法校驗時,假如Web運用中存在年夜量Action就須要屢次重寫validate辦法,是以可使用XWork的validator框架來對Struts2停止數據校驗,削減代碼量。
在com.action包下創立驗證文件LoginAction-validation.xml,注:當一個Action中有多個營業處置辦法是,定名規矩為:actionName-methodName-validation.xml,個中actionName為Action類名,methodName為Action中某個營業處置辦法的辦法名,而且文件的搜刮次序與方法一種validate()和validateX()一樣。
Login-validation.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd"> <validators> <field name="userName"> <field-validator type="requiredstring"> <message>the name should not null</message> </field-validator> </field> <field name="userPassword"> <field-validator type="requiredstring"> <message>the password should not null</message> </field-validator> </field> </validators>
再次運轉成果為:
上述字段校驗方法為字段校驗方法,還有一種方法長短字段校驗方法,以下:
Login-validation.xml:
<validators> <validator type="requiredstring"> <param name="fieldName">userName</param> <message>name should not null</message> </validator> <validator type="requiredstring"> <param name="fieldName">userPassword</param> <message>password should not null</message> </validator> </validators>
成果與字段校驗方法一樣
附:Struts2經常使用校驗器: