Struts/org.apache.struts.action.ActionMessage(メッセージ処理)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
**Strutsのメッセージ処理機構について [#zb498008]
Strutsのメッセージ処理を行うActionMessageの機能について見...
ActionMessageとはActionクラスで発生したエラー情報(とかな...
-各エラー情報((エラーじゃなくてもいいんですけどね))を格納...
-ActionMessageのリストを格納するActionMessages
-request,sessionなどのスコープ上に存在するActionMessages...
実際の使い方ですがアクションクラス内で
ActionMessages messages = new ActionMessages(); <-messag...
messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMe...
としてActionMessageを格納したActionMessagesを作成し、
saveMessages(request, messages);
としてリクエストスコープにActionMessagesを格納します。実...
さて上でリクエストスコープに格納されたActionMessageのリス...
<ul>
<html:messages id="message" message="true" >
<li><bean:write name="message" /></li>
</html:messages>
</ul>
とすることで画面に表示することができます。上の例だとWEBブ...
<ul>
<li>メッセージ0</li>
</ul>
というhtmlが描画されます。
**やってみる [#ofa0913f]
実際にアクションクラスでActionMessageを作成し、その情報を...
***Actionクラス(MessageAction) [#t06ae08b]
package nu.mine.kino.strutsexamples.actions;
public class MessageAction extends Action {
private static final Logger logger = Logger.getLogger(...
public ActionForward execute(ActionMapping mapping, Ac...
HttpServletRequest request, HttpServletResponse re...
throws Exception {
ActionForward forward = new ActionForward();
ActionMessages messages = new ActionMessages(); <-me...
// まずは、propertiesからでなく、ココで指定した文字...
messages.add(ActionMessages.GLOBAL_MESSAGE, new Acti...
false));// リソースフラグをfalseにする。 指定し...
// 次はpropertiesから文字列を取得するパタン。"msg.me...
// 画面表示。"メッセージ1"は可変文字列で、propertie...
// msg.message1={0} <-ココが置換される。
messages.add(ActionMessages.GLOBAL_MESSAGE, new Acti...
"msg.message1", "メッセージ1"));
// 可変パラメタは配列もOK。そのばあい
// msg.message2= {0},{1} などと複数プレースホルダを...
messages.add(ActionMessages.GLOBAL_MESSAGE, new Acti...
"msg.message2", new String[] { "メッセージ2の1...
// ActionMessages.GLOBAL_MESSAGEというのはグループの...
// Messageを表示するJSP側で、タグの指定にグループID...
// 詳細はJSP側で。
messages.add("HogeGroup", new ActionMessage("別グル...
// saveMessageすることで、
// request.setAttribute(Globals.MESSAGE_KEY, message...
// という処理が行われる。
saveMessages(request, messages);
return mapping.findForward("success");
}
}
***JSP(message.jsp) [#z761f468]
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http:...
<%@ page language="java" contentType="text/html; charset...
<%@ taglib uri="http://struts.apache.org/tags-bean" pref...
<%@ taglib uri="http://struts.apache.org/tags-html" pref...
<%@ taglib uri="http://struts.apache.org/tags-logic" pre...
<%@page import="org.apache.struts.action.ActionMessages"%>
<html:html xhtml="true" lang="true">
<head>
<title>ActionMessage系のサンプル</title>
<meta http-equiv="Content-Type" content="application/xht...
<html:base />
</head>
<body>
<ul>
<html:messages id="message" message="true" >
<li><bean:write name="message" /></li>
</html:messages>
</ul>
↑デフォルトでは、別グループのメッセージは除外しないみた...
<ul>
<html:messages id="message" message="true" property="Hog...
<li><bean:write name="message" /></li>
</html:messages>
</ul>
<ul>
<html:messages id="message" message="true" property="<%=...
<li><bean:write name="message" /></li>
</html:messages>
</ul>
↑別グループのメッセージの除外は、明示的にValueを指定すれ...
</body>
</html:html>
***MessageResources.properties [#ud1f7b33]
msg.message1={0}
msg.message2=修飾もできる {0},{1}
# -- standard errors --
errors.header=<ul>
errors.prefix=<li>
errors.suffix=</li>
errors.footer=</ul>
***実行結果 [#uc8c81b3]
上JSPを表示すると以下のようなhtmlが表示されます。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http:...
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml...
<head>
<title>ActionMessage系のサンプル</title>
<meta http-equiv="Content-Type" content="application/xht...
<base href="http://localhost:8080/strutsExamples/WEB-INF...
</head>
<body>
<ul>
<li>メッセージ0</li>
<li>メッセージ1</li>
<li>修飾もできる メッセージ2の1,メッセージ2の2</li>
<li>別グループのメッセージ</li>
</ul>
↑デフォルトでは、別グループのメッセージは除外しないみた...
<ul>
<li>別グループのメッセージ</li>
</ul>
<ul>
<li>メッセージ0</li>
<li>メッセージ1</li>
<li>修飾もできる メッセージ2の1,メッセージ2の2</li>
</ul>
↑別グループのメッセージの除外は、明示的にValueを指定すれ...
</body>
</html>
**説明。 [#d00c4d81]
***まずは格納する文言を直接指定する場合 [#df701460]
messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMe...
// リソースフラグをfalseにする。 指定しない場合デフォル...
ActionMessageのコンストラクタでfalseを指定すると、コンス...
saveMessages(request, messages);
このsaveMessagesを実行すると、ActionMessagesがリクエスト...
<ul>
<html:messages id="message" message="true" >
<li><bean:write name="message" /></li>
</html:messages>
</ul>
とするとActionMessagesからActionMessage((つうか正確にはた...
<html:messages id="message" message="true" >
のmessage属性は、エラーかメッセージかを指定するフラグで、...
saveMessages(request, messages);
で渡されたインスタンスで画面を描画します。falseの場合は[[...
saveErrors(request, messages);
で渡されたインスタンスで画面を描画します。
ActionMessages.GLOBAL_MESSAGEについてはメッセージのグルー...
***リソースファイルから文字列を取得する場合 [#u74ba509]
次はリソースファイルからキー値を指定して文字列を取得する...
messages.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("msg.message1", "メッセージ1"));
ActionMessageのコンストラクタでフラグを指定しない場合、デ...
msg.message1={0}
などと指定しておけば、{0}の箇所が引数で置換されます。従っ...
<li>メッセージ1</li>
が出力さます。
***プレースホルダは複数指定できる [#g1de0016]
プレースホルダは配列を使って複数指定することができます。
messages.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("msg.message2",
new String[] { "メッセージ2の1", "メッセージ2の2"...
と複数の置換文字列を指定し、リソースファイルでは
msg.message2=修飾もできる {0},{1}
としておくと、出力されるhtmlは
<li>修飾もできる メッセージ2の1,メッセージ2の2</li>
となります。
***ActionMessageのグルーピング指定 [#z992fe4b]
これまで
messages.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("msg.message1", "メッセージ1"));
などと「ActionMessages.GLOBAL_MESSAGE」という値を指定して...
messages.add("HogeGroup", new ActionMessage("別グループ...
と指定しておいてmessagesタグで
<ul>
<html:messages id="message" message="true" property="Hog...
<li><bean:write name="message" /></li>
</html:messages>
</ul>
と指定すればOKです。
今回はメッセージ処理までまとめました。ほとんど同じなので...
**サンプル [#r8da9621]
-[[サンプルプログラム(ViewVC)>http://www.masatom.in/cgi-b...
-[[サンプルプログラム(Subversion)>https://www.masatom.in/...
**TIPS [#zc8d487c]
***メッセージがあるときだけ○○ [#l5b6ffaf]
メッセージがあったときだけ何かしたいときなど。
<logic:messagesPresent>エラーが発生しました</logic:messa...
<logic:messagesNotPresent>エラーなし</logic:messagesNotP...
**関連リンク [#gb56a13e]
-Struts/org.apache.struts.action.ActionMessage(エラー処理)
-[[Javaの道:Struts(15.メッセージ処理)>http://www.ja...
-[[civic site : Strutsメッセージのまとめ-(2)>http://civic...
----
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
**Strutsのメッセージ処理機構について [#zb498008]
Strutsのメッセージ処理を行うActionMessageの機能について見...
ActionMessageとはActionクラスで発生したエラー情報(とかな...
-各エラー情報((エラーじゃなくてもいいんですけどね))を格納...
-ActionMessageのリストを格納するActionMessages
-request,sessionなどのスコープ上に存在するActionMessages...
実際の使い方ですがアクションクラス内で
ActionMessages messages = new ActionMessages(); <-messag...
messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMe...
としてActionMessageを格納したActionMessagesを作成し、
saveMessages(request, messages);
としてリクエストスコープにActionMessagesを格納します。実...
さて上でリクエストスコープに格納されたActionMessageのリス...
<ul>
<html:messages id="message" message="true" >
<li><bean:write name="message" /></li>
</html:messages>
</ul>
とすることで画面に表示することができます。上の例だとWEBブ...
<ul>
<li>メッセージ0</li>
</ul>
というhtmlが描画されます。
**やってみる [#ofa0913f]
実際にアクションクラスでActionMessageを作成し、その情報を...
***Actionクラス(MessageAction) [#t06ae08b]
package nu.mine.kino.strutsexamples.actions;
public class MessageAction extends Action {
private static final Logger logger = Logger.getLogger(...
public ActionForward execute(ActionMapping mapping, Ac...
HttpServletRequest request, HttpServletResponse re...
throws Exception {
ActionForward forward = new ActionForward();
ActionMessages messages = new ActionMessages(); <-me...
// まずは、propertiesからでなく、ココで指定した文字...
messages.add(ActionMessages.GLOBAL_MESSAGE, new Acti...
false));// リソースフラグをfalseにする。 指定し...
// 次はpropertiesから文字列を取得するパタン。"msg.me...
// 画面表示。"メッセージ1"は可変文字列で、propertie...
// msg.message1={0} <-ココが置換される。
messages.add(ActionMessages.GLOBAL_MESSAGE, new Acti...
"msg.message1", "メッセージ1"));
// 可変パラメタは配列もOK。そのばあい
// msg.message2= {0},{1} などと複数プレースホルダを...
messages.add(ActionMessages.GLOBAL_MESSAGE, new Acti...
"msg.message2", new String[] { "メッセージ2の1...
// ActionMessages.GLOBAL_MESSAGEというのはグループの...
// Messageを表示するJSP側で、タグの指定にグループID...
// 詳細はJSP側で。
messages.add("HogeGroup", new ActionMessage("別グル...
// saveMessageすることで、
// request.setAttribute(Globals.MESSAGE_KEY, message...
// という処理が行われる。
saveMessages(request, messages);
return mapping.findForward("success");
}
}
***JSP(message.jsp) [#z761f468]
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http:...
<%@ page language="java" contentType="text/html; charset...
<%@ taglib uri="http://struts.apache.org/tags-bean" pref...
<%@ taglib uri="http://struts.apache.org/tags-html" pref...
<%@ taglib uri="http://struts.apache.org/tags-logic" pre...
<%@page import="org.apache.struts.action.ActionMessages"%>
<html:html xhtml="true" lang="true">
<head>
<title>ActionMessage系のサンプル</title>
<meta http-equiv="Content-Type" content="application/xht...
<html:base />
</head>
<body>
<ul>
<html:messages id="message" message="true" >
<li><bean:write name="message" /></li>
</html:messages>
</ul>
↑デフォルトでは、別グループのメッセージは除外しないみた...
<ul>
<html:messages id="message" message="true" property="Hog...
<li><bean:write name="message" /></li>
</html:messages>
</ul>
<ul>
<html:messages id="message" message="true" property="<%=...
<li><bean:write name="message" /></li>
</html:messages>
</ul>
↑別グループのメッセージの除外は、明示的にValueを指定すれ...
</body>
</html:html>
***MessageResources.properties [#ud1f7b33]
msg.message1={0}
msg.message2=修飾もできる {0},{1}
# -- standard errors --
errors.header=<ul>
errors.prefix=<li>
errors.suffix=</li>
errors.footer=</ul>
***実行結果 [#uc8c81b3]
上JSPを表示すると以下のようなhtmlが表示されます。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http:...
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml...
<head>
<title>ActionMessage系のサンプル</title>
<meta http-equiv="Content-Type" content="application/xht...
<base href="http://localhost:8080/strutsExamples/WEB-INF...
</head>
<body>
<ul>
<li>メッセージ0</li>
<li>メッセージ1</li>
<li>修飾もできる メッセージ2の1,メッセージ2の2</li>
<li>別グループのメッセージ</li>
</ul>
↑デフォルトでは、別グループのメッセージは除外しないみた...
<ul>
<li>別グループのメッセージ</li>
</ul>
<ul>
<li>メッセージ0</li>
<li>メッセージ1</li>
<li>修飾もできる メッセージ2の1,メッセージ2の2</li>
</ul>
↑別グループのメッセージの除外は、明示的にValueを指定すれ...
</body>
</html>
**説明。 [#d00c4d81]
***まずは格納する文言を直接指定する場合 [#df701460]
messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMe...
// リソースフラグをfalseにする。 指定しない場合デフォル...
ActionMessageのコンストラクタでfalseを指定すると、コンス...
saveMessages(request, messages);
このsaveMessagesを実行すると、ActionMessagesがリクエスト...
<ul>
<html:messages id="message" message="true" >
<li><bean:write name="message" /></li>
</html:messages>
</ul>
とするとActionMessagesからActionMessage((つうか正確にはた...
<html:messages id="message" message="true" >
のmessage属性は、エラーかメッセージかを指定するフラグで、...
saveMessages(request, messages);
で渡されたインスタンスで画面を描画します。falseの場合は[[...
saveErrors(request, messages);
で渡されたインスタンスで画面を描画します。
ActionMessages.GLOBAL_MESSAGEについてはメッセージのグルー...
***リソースファイルから文字列を取得する場合 [#u74ba509]
次はリソースファイルからキー値を指定して文字列を取得する...
messages.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("msg.message1", "メッセージ1"));
ActionMessageのコンストラクタでフラグを指定しない場合、デ...
msg.message1={0}
などと指定しておけば、{0}の箇所が引数で置換されます。従っ...
<li>メッセージ1</li>
が出力さます。
***プレースホルダは複数指定できる [#g1de0016]
プレースホルダは配列を使って複数指定することができます。
messages.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("msg.message2",
new String[] { "メッセージ2の1", "メッセージ2の2"...
と複数の置換文字列を指定し、リソースファイルでは
msg.message2=修飾もできる {0},{1}
としておくと、出力されるhtmlは
<li>修飾もできる メッセージ2の1,メッセージ2の2</li>
となります。
***ActionMessageのグルーピング指定 [#z992fe4b]
これまで
messages.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("msg.message1", "メッセージ1"));
などと「ActionMessages.GLOBAL_MESSAGE」という値を指定して...
messages.add("HogeGroup", new ActionMessage("別グループ...
と指定しておいてmessagesタグで
<ul>
<html:messages id="message" message="true" property="Hog...
<li><bean:write name="message" /></li>
</html:messages>
</ul>
と指定すればOKです。
今回はメッセージ処理までまとめました。ほとんど同じなので...
**サンプル [#r8da9621]
-[[サンプルプログラム(ViewVC)>http://www.masatom.in/cgi-b...
-[[サンプルプログラム(Subversion)>https://www.masatom.in/...
**TIPS [#zc8d487c]
***メッセージがあるときだけ○○ [#l5b6ffaf]
メッセージがあったときだけ何かしたいときなど。
<logic:messagesPresent>エラーが発生しました</logic:messa...
<logic:messagesNotPresent>エラーなし</logic:messagesNotP...
**関連リンク [#gb56a13e]
-Struts/org.apache.struts.action.ActionMessage(エラー処理)
-[[Javaの道:Struts(15.メッセージ処理)>http://www.ja...
-[[civic site : Strutsメッセージのまとめ-(2)>http://civic...
----
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: