8

次のコマンドでファイルActionMessageを介してsを表示しています。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オブジェクトがあります-messageswarnings。次に、両方を別々のページに表示したいと思いJSPます... 1つのページを表示messagesし、もう1つのページを表示しwarningsます。

では、どのJSPメッセージを表示するかをページに示すにはどうすればよいでしょうか。



更新-2

今、私は奇妙なものを見つけました。

saveMessages(request, messages);
saveMessages(request, warnings);

私が上記のコードを書いたとき、ただwarnings機能していました。上記の2つのステートメントの順序を逆にすると、機能するだけmessagesでした。

ActionMessagesリクエストに追加できるオブジェクトは1つだけのようです。正しければ、2つのActionMessagesオブジェクトに別々にメッセージを表示する方法。

4

2 に答える 2

17

単純、

messagesあなたとあなたのを分離してくださいwarnings:あなたのストラットアクションで、あなたのメッセージと警告を次のように保存してください:

//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定数文字列から反復処理するBeanを取得します
が、この属性が「true」に設定されている場合、BeanはGlobals.MESSAGE_KEY定数文字列から取得されます。また、これが「true」に設定されている場合、name属性に割り当てられた値はすべて無視されます。

スクリプトレットを作成してそれらのキーが存在するかどうかを確認し<logic:iterate />てから、キーを使用してメッセージを表示することもできます(ただし、これは大変な作業になります)。

お役に立てれば。

于 2010-03-08T18:06:44.180 に答える
3

およびタグのmessage属性を使用する代わりに、属性を使用して、ページ、要求、セッション、またはアプリケーションスコープにあるActionMessagesオブジェクトの名前を指定できます。messagesPresentmessagesname

于 2010-03-08T18:00:33.930 に答える