<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 6  文章 - 129  trackbacks - 0
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(14)

    隨筆檔案(6)

    文章分類(467)

    文章檔案(423)

    相冊

    收藏夾(18)

    JAVA

    搜索

    •  

    積分與排名

    • 積分 - 825731
    • 排名 - 49

    最新評論

    閱讀排行榜

    評論排行榜

    struts中AtionErrors和ActionMessages的區(qū)別

    盡管Struts框架提供了有效的異常處理機制,但不能保證處理所有的錯誤,這時Struts框架會把錯誤拋給Web容器,在默認情況下Web容器會向用戶瀏覽器直接返回原始信息。如果想避免直接讓用戶看到這些原始信息,可以在web.xml中配置<error-page>元素,以下代碼演示了如何避免用戶看到HTTP 404、HTTP 500錯誤和Exception異常。

    web.xml:
      <error-page>
        <error-code>404</error-code>
        <location>/exception/error404.jsp</location>
      </error-page>
      <error-page>
        <error-code>500</error-code>
        <location>/exception/error500.jsp</location>
      </error-page>
      <error-page>
        <exception-type>java.lang.Exception</exception-type>
        <location>/exception/default.jsp</location>
      </error-page>
    當WEB容器捕獲到exception-type或error-code指定的錯誤時將跳到由location指定的頁面。

    ? 問題:當form bean 為動態(tài)bean時,在action中無法對form bean數(shù)據(jù)進行驗證,因為formbean沒有具體實現(xiàn)類。action中無法引用
    ? ActionError/ActionErrors/ActionMessage/ActionMessages:

    有時候你需要向用戶提供相關(guān)處理信息,包括表單驗證時發(fā)現(xiàn)錯誤等。
    1. 相關(guān)類介紹:
    ActionMessage:用于保存一個與資源束對應的提示信息。主要構(gòu)造函數(shù)如:
    ActionMessage(String message);
    ActionMessage(String message,paramater)。

    ActionMessages:用于保存多個ActionMessage。并在html:errors 和html:messages中起作用。
    主要構(gòu)造函數(shù):
    ActionMessages().
    主要方法是add(String property,ActionMessage message)
    ActionMessages有一個HashMap類型messages保存多個ActionMessage對象,每個ActionMessage對象都有唯一的一個property標識。這個property可以是自定義的任意字符串,也可以由org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE指定
    html:messages/html:errors使用property屬性訪問某個資源

    ActionErrors:用于保存一個與資源束對應的錯誤信息。用法跟ActionMessages差不多。
    ActionError不贊成使用。


    2. 版本:
    struts1.1中用ActionErrors報告錯誤,用ActionMessages提供信息。
    在struts1.2中使用ActionMessages提供信息和錯誤,不贊成使用ActionError
    struts1.3中已經(jīng)沒有ActionError類了。

    3. AtionErrors和ActionMessages的區(qū)別

    1. ActionErrors是ActionMessages的一個子類,功能幾乎相同,不同點在于標簽<html:errors/>和<html:messages>的使用上的區(qū)別。
    html:errors指定了footer和header屬性。默認值為errors.header和errors.footer,需要時可以自己指定。如果資源屬性文件配置了 errors.header和errors.footer,則任何時候使用html:errors時開頭和結(jié)尾都是這兩個屬性對應的資源信息。
    而html:message默認情況下沒有errors.header和errors.footer值,當然可以自己指定。

    2. html:errors可以根據(jù)property屬性指定顯示一個錯誤信息。html:messages有一個必添項id。html:messages不能直接顯示信息,它將選出的信息放入一個用id標識的Iterator對象里,然后在用ben:write或JSTL c:out標簽顯示每個信息.例如:
    <html:messages message="true" id="msg">
        <c:out value="${msg}"/><br />
    </html:messages>

    3. 具體的一個例子:
    接受輸入頁面input.jsp:

      <html:form action="/errormessage/input">
        phoneNumber : <html:text property="phoneNumber"/> <html:errors     property="<%=org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE %>"/><br/>
      <html:submit/><html:cancel/>
      </html:form>

    struts-config.xml:
      <form-beans >
        <form-bean name="inputForm" type="cn.rolia.struts.form.errorexception.InputForm" />
      </form-beans>
      <action-mappings >
        <action
          attribute="inputForm"
          input="/errormessage/input.jsp"
          name="inputForm"
          path="/errormessage/input"
          scope="request"
          type="com.yourcompany.struts.action.errormessage.InputAction"
          validate="false">
          <forward name="success" path="/errormessage/success.jsp" />
        </action>
      </action-mappings>

    InputAction.java:

    public ActionForward execute(ActionMapping mapping, ActionForm form,
        HttpServletRequest request, HttpServletResponse response) {
      cn.rolia.struts.form.errorexception.InputForm inputForm = (cn.rolia.struts.form.errorexception.InputForm) form;// TODO Auto-generated method stub
      String phoneNumber = inputForm.getPhoneNumber();
      if(phoneNumber.length()<4){
      ActionErrors messages = new ActionErrors();
        messages.add(org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE,new ActionMessage("error.errormessage.input"));
        this.saveErrors(request, messages);
        return mapping.getInputForward();
      }

      return mapping.findForward("success");
    }
    解說:用戶輸入手機號碼,頁面跳轉(zhuǎn)到InputAction控制層進行處理,若輸入數(shù)據(jù)小于4,則創(chuàng)建一個ActionMessage類存儲相關(guān)錯誤信息。然后再創(chuàng)建ActionErrors類將此ActionMessage放入ActionErrors。再調(diào)用Action的saveErrors方法將此ActionErrors保存的request范圍里,然后返回input.jsp頁面要求重新輸入并用html:errors提示錯誤信息。

    4. Action包含saveErrors()方法和saveMessages()方法。

    如果創(chuàng)建的ActionErrors則應該調(diào)用saveErrors(),若創(chuàng)建的是ActionMessages則應該調(diào)用saveMessages()方法。
    saveErrors()接收ActionMessages而不是ActionErrors;同時將其保存在request中并用一個由org.apache.struts.Globals.ERROR_KEY指定的常量” org.apache.struts.Globals.ERROR_KEY”標識這個ActionMessages,便于html:errors查找。saveMessages()方法接收ActionMessages同時將其保存在request中并用一個由org.apache.struts.Globals.MESSAGE_KEY指定的常量” org.apache.struts.Globals.MESSAGE_KEY”標識這個ActionMessages,進而讓html:messages從常量Globals.ERROR_KEY中遍歷獲取信息。可以將其屬性message設(shè)置為true,那么它將從常量Globals.MESSAGE_KEY中遍歷獲取信息。

    5. 默認情況下html:messages從如果你想將信息保存在session里而不是request,struts1.2提供了
    struts1.1沒有的saveMessages(HttpSession session, ActionMessages messages)方法和saveErrors(javax.servlet.http.HttpSession session, ActionMessages errors)方法。
    InputAction.java:

    public ActionForward execute(ActionMapping mapping, ActionForm form,
        HttpServletRequest request, HttpServletResponse response) {
    cn.rolia.struts.form.errorexception.InputForm inputForm = (cn.rolia.struts.form.errorexception.InputForm) form;// TODO Auto-generated method stub
      String phoneNumber = inputForm.getPhoneNumber();
      if(phoneNumber.length()<4){
        ActionErrors messages = new ActionErrors();
        messages.add(org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE,new ActionMessage("error.errormessage.input"));
        this.saveErrors(request.getSession(true), messages);
        return mapping.getInputForward();
      }

      return mapping.findForward("success");
    }



    posted on 2007-08-20 20:26 Ke 閱讀(799) 評論(0)  編輯  收藏 所屬分類: struts
    主站蜘蛛池模板: 亚洲av永久无码嘿嘿嘿| 精品久久免费视频| 一级做α爱过程免费视频| 亚洲伊人久久大香线蕉在观| 亚洲一区精品无码| 国产精品免费看久久久久| 国产无人区码卡二卡三卡免费| 久久er国产精品免费观看2| 三年片在线观看免费观看大全中国 | 狠狠色婷婷狠狠狠亚洲综合| 四虎影视www四虎免费| 国产乱子精品免费视观看片| 久久久久国产精品免费看| 韩国免费A级毛片久久| 日产久久强奸免费的看| 国产精品久久久久久亚洲小说| 亚洲看片无码在线视频| www.亚洲日本| 亚洲av日韩av无码av| 亚洲成人高清在线观看| 亚洲精品成人图区| 亚洲精品在线免费观看视频| 久久亚洲美女精品国产精品| 亚洲av日韩av天堂影片精品| 亚洲va无码va在线va天堂| 亚洲爆乳精品无码一区二区三区| 久久久无码精品亚洲日韩软件 | 国产成人精品日本亚洲专区6| 亚洲资源在线视频| 亚洲第一页在线视频| 亚洲综合免费视频| 91亚洲精品麻豆| 精品国产日韩久久亚洲| 亚洲熟女乱色一区二区三区| 亚洲真人无码永久在线观看| 亚洲精品无码久久久久牙蜜区| 亚洲国产精品无码久久九九大片| 亚洲av成人中文无码专区| 麻豆69堂免费视频| 丰满妇女做a级毛片免费观看 | www.亚洲色图.com|