質問

表示しています 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 /> キーを使用してメッセージを表示します (ただし、それは大変な作業になります)。

お役に立てれば。

他のヒント

代わりにmessagemessagesPresentタグにmessages属性を使用しての

、あなたがページ、リクエスト、セッション、またはアプリケーションのスコープを持っているオブジェクトのActionMessagesの名前を指定するには、name属性を使用することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top