隨筆-61  評(píng)論-159  文章-0  trackbacks-0
                   在struts2中,一般的action都繼承ActionSupport這個(gè)類,可以重寫public void validate()來進(jìn)行數(shù)據(jù)校驗(yàn),對(duì)應(yīng)提示信息來說一般有兩個(gè)比較常用的方法就是this.addFieldError("field name","error message"); 和 this.addActionError("error message");兩個(gè)方法。
                   由于在ActionSupport這個(gè)類實(shí)現(xiàn)了ValidationAware接口,接口里面聲明了這兩個(gè)方法:
                  
          1public void addActionError(String anErrorMessage) {
          2        validationAware.addActionError(anErrorMessage);
          3    }

          4
          5    public void addActionMessage(String aMessage) {
          6        validationAware.addActionMessage(aMessage);
          7    }

          ValidationAwareSupport實(shí)現(xiàn)了ValidationAware接口,通過查看ValidationAwareSupport源碼中的兩個(gè)錯(cuò)誤提示方法:
                  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級(jí)別是Map類型,所以this.addFieldError("field name","error message"); ,而actionerror級(jí)別是Collection級(jí)別,所以this.addActionError("error message");

          在實(shí)際的項(xiàng)目開發(fā)應(yīng)用中如果同時(shí)用到field和action錯(cuò)誤級(jí)別的時(shí)候,在jsp頁面中的表單有用到struts2的標(biāo)簽來實(shí)現(xiàn)的話,就有可能對(duì)于同一個(gè)表單,既有filed級(jí)別error提示又有action級(jí)別的error提示,這時(shí),可以根據(jù)項(xiàng)目的實(shí)際需要來取舍,但是如果兩個(gè)都要同時(shí)存在的時(shí)候,只顯示action級(jí)別的error,而不顯示field級(jí)別的action,由于struts2標(biāo)簽?zāi)J(rèn)就是顯示field級(jí)別的error,所以要修改模板,加入theme="simple"即可,這時(shí)struts2表單那標(biāo)簽?zāi)J(rèn)的顯示field錯(cuò)誤提示失效,使用這個(gè)模板的好處還可以和普通的html一樣隨便設(shè)計(jì)版面。例如:<s:form action="RegisterAction"theme="simple" >
          PS:要顯示action級(jí)別的錯(cuò)誤提示,需要在jsp頁面中的表單里面加入<s:actionerror/>。

           



          -------------------------------------------------------------------------------------------------
          PS:本博客文章,如果沒有注明是有“轉(zhuǎn)”字樣,屬于本人原創(chuàng)。如果需要轉(zhuǎn)載,務(wù)必注明作者文章的詳細(xì)出處地址,否則不允許轉(zhuǎn)載,多謝合作!
          posted on 2008-11-27 22:44 apple0668 閱讀(1867) 評(píng)論(0)  編輯  收藏 所屬分類: struts2
          主站蜘蛛池模板: 建平县| 沾益县| 涪陵区| 河北区| 扎赉特旗| 武安市| 丽江市| 伊宁县| 铁岭市| 新和县| 邯郸县| 苏尼特左旗| 齐齐哈尔市| 铜川市| 舞阳县| 南和县| 桃江县| 祁门县| 漳浦县| 巴林右旗| 盐源县| 民权县| 天镇县| 仁布县| 枝江市| 和林格尔县| 贵德县| 邵阳县| 托克托县| 南岸区| 涞水县| 东乡县| 潼关县| 五河县| 达州市| 延安市| 巴彦县| 临朐县| 石狮市| 兴宁市| 吴桥县|