Struts 1 - ActionMessage を表示する方法
質問
表示しています ActionMessage
を介して JSP
次のコマンドでファイルを作成します。
<logic:messagesPresent message="true">
<ul id="messsages">
<html:messages id="msg" message="true">
<li><bean:write name="msg"/> </li>
</html:messages>
</ul>
</logic:messagesPresent>
選択したメッセージのみを表示したいと思います。どのメッセージを表示するかを指定するにはどうすればよいですか?
更新しました
実は2つ持っているんです ActionMessages
物体 - messages
そして warnings
。今度は両方を別々に表示したいと思います JSP
ページ...表示する 1 ページ messages
その他の場合 warnings
.
では、どのように指定するか JSP
どのメッセージを表示するページですか?
更新 - 2
さて、奇妙なものを見つけました。
saveMessages(request, messages);
saveMessages(request, warnings);
上記のコードを書いたときのみ、 warnings
仕事をしていました。上記 2 つのステートメントの順序を逆にすると、 messages
仕事をしていました。
1つだけ追加できるようです ActionMessages
リクエスト内のオブジェクト。それが正しい場合、メッセージを 2 つに分けて表示する方法 ActionMessages
オブジェクトは個別に。
解決
単純、
あなたのものを分離してください messages
そしてあなたの warnings
:Struts アクションで、次のようにメッセージと警告を保存します。
//For messages
saveMessages(request, messages);
//For warnings
saveErrors(request, warnings);
それらを表示するには:
<logic:messagesPresent message="true">
<html:messages id="aMsg" message="true">
<logic:present name="aMsg">
<!-- Messages -->
<div class="messages">
<bean:write name="aMsg" filter="false" />
</div>
</logic:present>
</html:messages>
</logic:messagesPresent>
<logic:messagesPresent message="false">
<html:messages id="aMsg" message="false">
<logic:present name="aMsg">
<!-- Warnings-->
<div class="warnings">
<bean:write name="aMsg" filter="false" />
</div>
</logic:present>
</html:messages>
</logic:messagesPresent>
これですべてが表示されます messages
(設定することにより message="true"
)
<html:messages id="aMsg" message="true">
これですべてが表示されます warnings
(設定することにより message="false"
)
<html:messages id="aMsg" message="false">
アップデート あなたの質問が解決されたことを考えると、最も簡単な方法はこれを行うことです。
ユーザーが表示を希望するかどうかを示す特定のフラグを設定する messages
または warnings
. 。Struts アクションでフラグを要求し、ユーザーがメッセージまたは警告の表示を選択したかどうかを確認します。次に、どちらかを保存します warnings
または messages
ユーザーの選択に基づいて、(上で書いたように) 同じページを表示してメッセージを表示します。
その理由は、Struts が (メッセージまたはエラーを保存するとき) 要求またはセッションに応じて次の定数を使用して保存するためです。
- Globals.MESSAGE_KEY (実行時に割り当てられます)
saveMessages(request, messages)
) - Globals.ERROR_KEY (実行時に割り当てられます)
saveErrors(request, errors)
)
使用するとき <logic:messagesPresent message="true">
, Struts は MESSAGE_KEY
(message=true の場合) または ERROR_KEY
(message=false の場合)、または両方 (message=none の場合)。それをコントロールすることはできません。
<html:messages />
TLD コメントには次のように記載されています。
デフォルトでは、タグはGlobals.Error_Key定数文字列から繰り返される豆を取得します。
ただし、この属性が「true」に設定されている場合、BeanはGlobals.message_key定数文字列から取得されます。また、これが「true」に設定されている場合、名前属性に割り当てられた値は無視されます。
これらのキーが存在するかどうかを確認するスクリプトレットを作成して、 <logic:iterate />
キーを使用してメッセージを表示します (ただし、それは大変な作業になります)。
お役に立てれば。
他のヒント
message
とmessagesPresent
タグにmessages
属性を使用しての、あなたがページ、リクエスト、セッション、またはアプリケーションのスコープを持っているオブジェクトのActionMessagesの名前を指定するには、name
属性を使用することができます。