程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> struts2中action和field級別錯誤處理

struts2中action和field級別錯誤處理

編輯:關於JAVA

在struts2中,一般的action都繼承ActionSupport這個類,可以重寫public void validate()來進行數據校驗,對應提示信息來說一般有兩個比較常用的方法就是this.addFieldError("field name","error message"); 和 this.addActionError("error message");兩個方法。

由於在ActionSupport這個類實現了ValidationAware接口,接口裡面聲明了這兩個方法:

1public void addActionError(String anErrorMessage) {
2    validationAware.addActionError(anErrorMessage);
3  }
4
5  public void addActionMessage(String aMessage) {
6    validationAware.addActionMessage(aMessage);
7  }

而ValidationAwareSupport實現了ValidationAware接口,通過查看ValidationAwareSupport源碼中的兩個錯誤提示方法:

private Collection actionErrors;
    private Map fieldErrors;
1public synchronized void addFieldError(String fieldName, String errorMessage) {
2    final Map errors = internalGetFieldErrors();
3    List thisFieldErrors = (List) errors.get(fieldName);
4
5    if (thisFieldErrors == null) {
6      thisFieldErrors = new ArrayList();
7      errors.put(fieldName, thisFieldErrors);
8    }
9
10    thisFieldErrors.add(errorMessage);
11  }
1public synchronized void addActionError(String anErrorMessage) {
2    internalGetActionErrors().add(anErrorMessage);
3  }
4

注:由於fielderrors級別是Map類型,所以this.addFieldError("field name","error message"); ,而actionerror級別是Collection級別,所以this.addActionError("error message");

在實際的項目開發應用中如果同時用到field和action錯誤級別的時候,在jsp頁面中的表單有用到struts2的標簽來實現的話,就有可能對於同一個表單,既有filed級別error提示又有action級別的error提示,這時,可以根據項目的實際需要來取捨,但是如果兩個都要同時存在的時候,只顯示action級別的error,而不顯示field級別的action,由於struts2標簽默認就是顯示field級別的error,所以要修改模板,加入theme="simple"即可,這時struts2表單那標簽默認的顯示field錯誤提示失效,使用這個模板的好處還可以和普通的html一樣隨便設計版面。例如:<s:form action="RegisterAction"theme="simple" >

PS:要顯示action級別的錯誤提示,需要在jsp頁面中的表單裡面加入<s:actionerror/>。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved