¤³¤Î¥Ú¡¼¥¸¤òdel.icio.us¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤ò¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤à¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯ ¤³¤Î¥Ú¡¼¥¸¤òlivedoor ¥¯¥ê¥Ã¥×¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤òYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤àYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯
Top / Struts / Îã³°¥Ï¥ó¥É¥é(ExceptionHandler)¤òÍѤ¤¤¿Àë¸ÀŪ¤ÊÎã³°½èÍý

Struts¤ÎÎã³°½èÍý¤Ë¤Ä¤¤¤Æ¤Þ¤È¤á¤Þ¤¹¡£Struts¤ÎÎã³°½èÍý¤Ï¤¤¤ï¤æ¤ëÀë¸ÀŪ¤ÊÎã³°½èÍýµ¡¹½¤¬¤¢¤ê¤Þ¤¹¡£ Á´¤Æ¤Î¥¢¥¯¥·¥ç¥ó¡¢¤â¤·¤¯¤ÏÆÃÄê¤Î¥¢¥¯¥·¥ç¥ó¤Ç¡ß¡ßException¤¬È¯À¸¤·¤¿¾ì¹ç¤Ï¤³¤Î¥¨¥é¡¼²èÌ̤ØÁ«°Ü¡¢¤Ê¤É¤È¤¤¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤Þ¤¿¡¢¤¢¤ëÎã³°¤¬È¯À¸¤·¤¿¤È¤­¤Ë²èÌÌÁ«°Ü¤À¤±¤Ç¤Ê¤¯ÆÃ¼ì¤Ê½èÍý¤ò¤·¤¿¤¤¾ì¹ç¡¢Îã³°¥Ï¥ó¥É¥é¤òÄêµÁ¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ½èÍý¤òÁȤ߹þ¤à¤³¤È¤â¤Ç¤­¤Þ¤¹¡£¤¿¤È¤¨¤Ð¤¢¤ëÎã³°¤Ç¡¢ÆâÉô¤Î¥¨¥é¡¼£É£Ä¤ò¸«¤ÆÁ«°ÜÀè¤òÀÚ¤êÂØ¤¨¤¿¤¤¡¢¤Ê¤ó¤Æ¤³¤È¤¬²Äǽ¤Ç¤¹¡£

¤ä¤Ã¤Æ¤ß¤ë

¥µ¥ó¥×¥ë¤Ç¸«¤Æ¤ß¤Þ¤¹¡£¥¢¥¯¥·¥ç¥ó¥¯¥é¥¹¤ÇÆÃÄê¤ÎÎã³°(NormalException?¤È¤·¤Þ¤·¤¿)¤¬È¯À¸¤·¤¿¤È¤­¤Ë¡¢error.jsp¤ËÁ«°Ü¤µ¤»¤ë¤³¤È¤ò¹Í¤¨¤Þ¤¹¡£

ή¤ì

normalEx -> ¥¨¥é¡¼È¯À¸ -> error.jsp

¤È¤¤¤¦Î®¤ì¤Î¥µ¥ó¥×¥ë¤Ç¤¹¡£

¥½¡¼¥¹

  • struts-config.xml
    <global-exceptions>
      <exception key="error.NormalException"
               type="nu.mine.kino.strutsexamples.exceptions.NormalException"
               path="/WEB-INF/jsp/error.jsp"/>
      <!-- ¤³¤ÎkeyÃͤÇActionMessage¤òÀ¸À®¤·¤Æ¥¹¥³¡¼¥×¤Ë¥»¥Ã¥È¤·¤Æ¤¤¤ë¡£
           ¥á¥Ã¥»¡¼¥¸¤Îvalue¤Ï¡¢properties¤«¤é¼èÆÀ¤·¤Æ¤¤¤ë¡£
      -->
    </global-exceptions>

NormalException?¤ò¥¹¥í¡¼¤·¤¿¤éerror.jsp¤ËÁ«°Ü¤·¤Ê¤µ¤¤¡¢¤Þ¤¿error.NormalException?¤È¤¤¤¦¥­¡¼ÃͤÎActionMessage?¤òºîÀ®¤·¤Ê¤µ¤¤¡¢¤È¤¤¤¦°ÕÌ£¤Ç¤¹¡£

  • ¥¢¥¯¥·¥ç¥ó¥¯¥é¥¹(NormalExceptionAction?)
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        throw new NormalException("ÉáÄ̤Υϥó¥É¥ê¥ó¥°¤ò¤¹¤ëÎã³°¡ª");
    }
  • MessageResources?.properties
    error.NormalException=NormalException!! [{0}]

Îã³°¤¬¥¹¥í¡¼¤µ¤ì¤ë¤È¡¢org.apache.struts.action.ExceptionHandler?¤¬½èÍý¤ò¹Ô¤¦¤Î¤Ç¤¹¤¬*1¡¢¤½¤ÎÃæ¤ÇActionMessage?¤òÀ¸À®¤¹¤ë½èÍý¤¬¤¢¤ê¤Þ¤¹¡£¤½¤³¤Ç

ActionMessage error = new ActionMessage(ae.getKey(), ex.getMessage());
ae.getKey() ¤Ïstruts-config.xml¤Î¥­¡¼ÃÍ(error.NormalException)
ex.getMessage()  ¤ÏÎã³°¤ÎgetMessage()

¤È¤¤¤¦½èÍý¤¬¤¢¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê error.NormalException? ¤È¤¤¤¦¥­¡¼ÃÍ¡¢Îã³°¤Î¥á¥Ã¥»¡¼¥¸¤Ç{0}¤òÃÖ´¹¤·¤Ê¤µ¤¤¡¢¤È¤¤¤¦°ÕÌ£¤Ë¤Ê¤ê¤Þ¤¹¡£

  • error.jsp
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <%@ page language="java" contentType="text/html; charset=UTF-8" %>
    <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
    <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
    <%@page import="org.apache.struts.Globals"%>
    <html:html xhtml="true" lang="true">
    <head>
    <title>¥¨¥é¡¼¥Ï¥ó¥É¥é¤Î¥µ¥ó¥×¥ë</title>
    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
    <html:base />
    </head>
    <body>
    
    <ul>
    <html:messages id="message">
      <li><bean:write name="message" /></li>
    </html:messages>
    </ul>
    
    <hr />
    
    <html:errors />
    
    <hr />
    </body>
    </html:html>

¤¢¤È¤ÏÉáÄ̤ÎActionMessage?¤Î½èÍý¤ÈƱ¤¸¤Ç¤¹¤Í¡£

¼Â¹Ô·ë²Ì

<ul>
  <li>NormalException!! [ÉáÄ̤Υϥó¥É¥ê¥ó¥°¤ò¤¹¤ëÎã³°¡ª]</li>
</ul>
<hr />
<ul><li>NormalException!! [ÉáÄ̤Υϥó¥É¥ê¥ó¥°¤ò¤¹¤ëÎã³°¡ª]</li></ul>
<hr />

¤È¤¤¤Ã¤¿html¤¬½ÐÎϤµ¤ì¤Þ¤·¤¿¡£

¥¢¥¯¥·¥ç¥ó¥¯¥é¥¹¤ÇºîÀ®¤·¤¿ActionMessages?¤¬¤Ç¤Ê¤¤¤è¤¦¤Ê¡¢¡¢¡£

¤³¤³¤Ç¤Ï¥¢¥¯¥·¥ç¥ó¥¯¥é¥¹¤Ç¤ÏÎã³°¤ò¥¹¥í¡¼¤·¤¿¤À¤±¤Ç¤·¤¿¤¬¡¢¥¢¥¯¥·¥ç¥ó¥¯¥é¥¹Æâ¤Ç¤¤¤í¤¤¤í¤ÊActionMessage?¤òºîÀ®¤·¤Æ¤ª¤¤¤Æ¤â¡¢²èÌ̤ˤÏɽ¼¨¤µ¤ì¤Þ¤»¤ó¡£¤³¤ì¤Ë¤Ä¤¤¤Æ¤ÏStruts/ActionMessages¤Ë¤è¤ë¥¨¥é¡¼½èÍý¤È¡¢Îã³°¥Ï¥ó¥É¥é¤Ç½èÍý¤·¤¿¾ì¹ç¤Îµóư¤Î°ã¤¤¤Ë¤Þ¤È¤á¤Þ¤·¤¿¡£

org.apache.struts.action.ExceptionHandler?¤òÊѹ¹¤·¤ÆÆÈ¼«¤Î½èÍý¤òÆþ¤ì¤ë

  • struts-config.xml
    <global-exceptions>
        <exception
            key="error.NormalException"
            type="nu.mine.kino.strutsexamples.exceptions.NormalException"
            handler="nu.mine.kino.strutsexamples.exceptions.CustomizeExceptionHandler" 
            path="/WEB-INF/jsp/error.jsp"/>
    </global-exceptions>
    ¤ËÊѹ¹¤¹¤ë¤À¤±¤Ç¤¹¤Í¡£¥Ç¥Õ¥©¥ë¥È¤ÎExceptionHandler?¤Ç¤Ï¤Ê¤¯CustomizeExceptionHandler?¤ò»È¤¦¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¼ÂºÝ¤Î¥½¡¼¥¹¤Ï°Ê²¼¤ÎÄ̤ꡣ
  • Îã³°¥Ï¥ó¥É¥é¥¯¥é¥¹(CustomizeExceptionHandler?)
    public ActionForward execute(Exception exception, ExceptionConfig config,
        ActionMapping mapping, ActionForm form, HttpServletRequest request,
        HttpServletResponse response) throws ServletException {
    
      NormalException normalException = (NormalException) exception;
      // ¥¨¥é¡¼¥³¡¼¥É¸«¤ë¤È¤«¡¢¤Ê¤ó¤«½èÍý¡£
      ActionForward forward = super.execute(exception, config, mapping, form,
          request, response);
      return forward;
    }
    ¤³¤³¤Ç¤Ï¤Ê¤ó¤Ë¤â¤·¤Æ¤Þ¤»¤ó¤¬¡¢¼ÂºÝ¤ÏNormalException?¤ò¸«¤Æ¤Ê¤ó¤«¤¹¤ë¤È¤«¡¢¤¢¤ë¾ì¹ç¤À¤±Ê̤ÎÁ«°Ü¤È¤«¡¢¼«Í³¤Ë¿§¡¹¤ä¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤Í¡£

Á«°ÜÀè¤âstruts-config.xml¤«¤é¤Ç¤Ê¤¯¡¢¥Ï¥ó¥É¥éÆâ¤ÇÀ©¸æ¤¹¤ë

¥Ç¥Õ¥©¥ë¥È¤ÎExceptionHandler?¤Ï´ðËÜŪ¤Ë

 <exception
     key="error.NormalException"
     type="nu.mine.kino.strutsexamples.exceptions.NormalException"
     handler="nu.mine.kino.strutsexamples.exceptions.CustomizeExceptionHandler" 
     path="/WEB-INF/jsp/error.jsp"/>

¤ÈÁ«°ÜÀ褬¸ÇÄê¤Ç¤·¤¿¤¬¡¢¼Â¤Ï¤³¤ÎÃͤϥª¥×¥·¥ç¥Ê¥ë¤Ç¡¢¼ÂºÝ¤ÎÁ«°ÜÀè¤òÁ´¤Æ¥Ï¥ó¥É¥é¤Ë¤ä¤é¤»¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£¼ÂºÝExceptionHandler?¤Î¥½¡¼¥¹¤ò¸«¤Æ¤ß¤ë¤È¡¢

if (ae.getPath() != null) {
  forward = new ActionForward(ae.getPath());
} else {
  forward = mapping.getInputForward();
}

¤È¤¤¤¦¤è¤¦¤Ë¡¢exception¥¿¥°¤Îpath¤«¤éÁ«°ÜÀè¤ò¼è¤ê½Ð¤¹¡¢¤â¤·¤¯¤Ï¤«¤éaction¥¿¥°¤Îinput°À­¤«¤é¼è¤ê½Ð¤¹¡¢¤È¤ä¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢¤³¤³¤òOverride¤¹¤ì¤Ð¤è¤¤¤Ç¤¹¤Í¡£

  • struts-config.xml
    <global-exceptions>
        <exception
            key="error.NormalException"
            type="nu.mine.kino.strutsexamples.exceptions.NormalException"
            handler="nu.mine.kino.strutsexamples.exceptions.CustomizeExceptionHandler" 
    </global-exceptions>
  • Îã³°¥Ï¥ó¥É¥é¥¯¥é¥¹(CustomizeExceptionHandler?)
    public ActionForward execute(Exception exception, ExceptionConfig config,
          ActionMapping mapping, ActionForm form, HttpServletRequest request,
          HttpServletResponse response) throws ServletException {
    
       NormalException normalException = (NormalException) exception;
       // ¥¨¥é¡¼¥³¡¼¥É¸«¤ë¤È¤«¡¢¤Ê¤ó¤«½èÍý¡£
       // °ì±þ¡¢¿Æ¥¯¥é¥¹¤Î½èÍý¤ò¸Æ¤Ö¤±¤É¡¢Á«°ÜÀè¤Ï¼«Ê¬¤Ç»ØÄꤹ¤ë
       ActionForward forward = super.execute(exception, config, mapping, form,
             request, response);
       return mapping.findForward("success"); <-¼«Ê¬¤Ç»ØÄê
    }
    ¤³¤Î¤è¤¦¤Ë¼«Ê¬¤Ç¤ä¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¤Í¡£

¥µ¥ó¥×¥ë¡£

TIPS

¥¹¥í¡¼¤µ¤ì¤¿Îã³°¤Ë¥¢¥¯¥»¥¹¤¹¤ë

¥¹¥í¡¼¤µ¤ì¤¿Exception¤Ï

Globals.EXCEPTION_KEY

¤È¤¤¤¦¥­¡¼ÃÍ*2¤Ç¥ê¥¯¥¨¥¹¥È¥¹¥³¡¼¥×¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç

<logic:present name="<%=Globals.EXCEPTION_KEY %>" >
  <bean:write name="<%=Globals.EXCEPTION_KEY %>"/> 
</logic:present>

¤Ç¥¢¥¯¥»¥¹²Äǽ¤Ç¤¹¡£

´ØÏ¢¥ê¥ó¥¯

¤³¤Îµ­»ö¤Ï

ÁªÂò»è Åêɼ
¤ª¤â¤·¤í¤«¤Ã¤¿ 30  
¤½¤¦¤Ç¤â¤Ê¤¤ 4  
  • ÊÙ¶¯¤Ë¤Ê¤ê¤Þ¤¹¡£¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹ -- 2011-12-13 (²Ð) 20:33:38

¤³¤Î¥Ú¡¼¥¸¤òdel.icio.us¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤ò¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤à¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯ ¤³¤Î¥Ú¡¼¥¸¤òlivedoor ¥¯¥ê¥Ã¥×¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤òYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤àYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯
Top / Struts / Îã³°¥Ï¥ó¥É¥é(ExceptionHandler)¤òÍѤ¤¤¿Àë¸ÀŪ¤ÊÎã³°½èÍý

¸½ºß¤Î¥¢¥¯¥»¥¹:20445


*1 ¤³¤ì¤Ïstruts-config.xml¤Îhandler°À­¤ÇÊѹ¹²Äǽ
*2 ¼ÂºÝ¤ÎÃͤÏ"org.apache.struts.action.EXCEPTION"

¥È¥Ã¥×   ÊÔ½¸ Åà·ë º¹Ê¬ ¥Ð¥Ã¥¯¥¢¥Ã¥× źÉÕ Ê£À½ ̾Á°Êѹ¹ ¥ê¥í¡¼¥É   ¿·µ¬ °ìÍ÷ ñ¸ì¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS
Last-modified: 2012-04-11 (¿å) 18:12:43 (38d)