Struts/ActionMessagesによるエラー処理と、例外ハンドラで処理した場合の挙動の違い
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
エラー処理を行う場合、遷移先のエラー画面JSPで
<ul>
<html:messages id="message">
<li><bean:write name="message" /></li>
</html:messages>
</ul>
などと書いたりしますが、ActionMessagesを使ったエラー処理...
例外ハンドラを使ってJSPに遷移した場合、アクションクラスで...
**まずは<bean:write name="message" /> から [#i8c30779]
まず<bean:write name="message" /> のmessageというオブジェ...
MessagesTag.processMessage(ActionMessage)
内の275行目あたりにある
pageContext.setAttribute(id, msg);
id:上のid属性の値(message),
msg: html画面上に表示される文言(型はString)
のmsgオブジェクトでした。すでにStringなんですね((これがAc...
さてこのMessageTag.processMessage(ActionMessage)のActionM...
<ul>
<html:messages id="message">
<li><bean:write name="message" /></li>
</html:messages>
</ul>
だとしても、遷移元の処理の違いによって、渡されるActionMes...
**通常のアクションクラスでセットしたActionMessage(s)を表...
msgにはアクションのActionMessageから取り出した文字列が入...
**例外ハンドラによって生成されたActionMessage(s)を表示す...
アクションでせっせと生成したActionMessageは渡ってきません...
調べたところorg.apache.struts.action.ExceptionHandlerクラ...
ExceptionHandler#execute(Exception, ExceptionConfig, Act...
ActionForm, HttpServletRequest, HttpServletRes...
内(147行目あたり)で、
error = new ActionMessage(ae.getKey(), ex.getMessage());
とされていました。ae.getKey()はstruts-config.xmlで指定さ...
protected void storeException(HttpServletRequest request...
ActionMessage error, ActionForward forward, String sco...
ActionMessages errors = new ActionMessages();
errors.add(property, error);
if ("request".equals(scope)) {
request.setAttribute(Globals.ERROR_KEY, errors);
} else {
request.getSession().setAttribute(Globals.ERROR_KEY,...
}
}
され、ActionでセットしたActionMessagesは
request.setAttribute(Globals.ERROR_KEY, errors);
によってあえなく取って替わられることになります。
へぇー。
----
この記事は
#vote(おもしろかった[23],そうでもない[31])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
エラー処理を行う場合、遷移先のエラー画面JSPで
<ul>
<html:messages id="message">
<li><bean:write name="message" /></li>
</html:messages>
</ul>
などと書いたりしますが、ActionMessagesを使ったエラー処理...
例外ハンドラを使ってJSPに遷移した場合、アクションクラスで...
**まずは<bean:write name="message" /> から [#i8c30779]
まず<bean:write name="message" /> のmessageというオブジェ...
MessagesTag.processMessage(ActionMessage)
内の275行目あたりにある
pageContext.setAttribute(id, msg);
id:上のid属性の値(message),
msg: html画面上に表示される文言(型はString)
のmsgオブジェクトでした。すでにStringなんですね((これがAc...
さてこのMessageTag.processMessage(ActionMessage)のActionM...
<ul>
<html:messages id="message">
<li><bean:write name="message" /></li>
</html:messages>
</ul>
だとしても、遷移元の処理の違いによって、渡されるActionMes...
**通常のアクションクラスでセットしたActionMessage(s)を表...
msgにはアクションのActionMessageから取り出した文字列が入...
**例外ハンドラによって生成されたActionMessage(s)を表示す...
アクションでせっせと生成したActionMessageは渡ってきません...
調べたところorg.apache.struts.action.ExceptionHandlerクラ...
ExceptionHandler#execute(Exception, ExceptionConfig, Act...
ActionForm, HttpServletRequest, HttpServletRes...
内(147行目あたり)で、
error = new ActionMessage(ae.getKey(), ex.getMessage());
とされていました。ae.getKey()はstruts-config.xmlで指定さ...
protected void storeException(HttpServletRequest request...
ActionMessage error, ActionForward forward, String sco...
ActionMessages errors = new ActionMessages();
errors.add(property, error);
if ("request".equals(scope)) {
request.setAttribute(Globals.ERROR_KEY, errors);
} else {
request.getSession().setAttribute(Globals.ERROR_KEY,...
}
}
され、ActionでセットしたActionMessagesは
request.setAttribute(Globals.ERROR_KEY, errors);
によってあえなく取って替わられることになります。
へぇー。
----
この記事は
#vote(おもしろかった[23],そうでもない[31])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: