struts2中的手動驗證須要咱們在action中繼承ActionSupport類,而且覆蓋裏面的validate方法,進行手動驗證,原理實現過程 Brown--->validate-方法-->execute方法---->result。當咱們有大量的請求同一個action中的不一樣方法時,咱們須要本身定義方法來驗證不一樣的請求,而不能把全部的驗證都寫在validate方法裏面,這時咱們須要寫一個與請求方法對應的驗證方法,原理實現過程 Brown--->validateXxx方法-->xxx方法---->result。ide
注意:當咱們驗證不成功的時候咱們能夠在驗證方法裏面加入 this.addActionError("年齡不合法!");這個方法,而在前臺頁面咱們能夠經過<s:actionerror/>標籤來獲取這個錯誤提示,而且當咱們驗證不成功的時候咱們須要指定result的name爲input值來肯定驗證失敗須要跳轉到的頁面。this
例如:spa
public class RegAction extends ActionSupport{ private User user; public User getUser() { return user; }繼承 public void setUser(User user) { this.user = user; }ci @Override public String execute() throws Exception { // TODO Auto-generated method stub System.out.println("execute()方法執行了!"); return super.execute(); lic String age(){ System.out.println("age"); return SUCCESS; } //該方法名只能是validate+提交到的方法名。不能進行自定義。 public void validateAge(){ if(user.getAge()>100||user.getAge()<1){ this.addActionError("年齡不合法!"); } } @Override public void validate() { // TODO Auto-generated method stub /* * 當咱們提交的年齡大於一百歲或者小於一歲的時候,將直接跳轉到input類型所指定的頁面上去。 * 而當咱們有不少數據提交到這個action時,確定是提交到不一樣的方法中,因此咱們驗證也寫到不一樣的方法中去,不能寫在validate中了 * 由於validate方法只進行驗證提交給execute方法的數據。 */ /*if(user.getAge()>100||user.getAge()<1){ this.addActionError("年齡不合法!"); }*/ System.out.println("validate()方法執行了!"); } }get |