SAStrutsでリダイレクトした後に一度だけメッセージを表示する

知識不足からちょっとハマったのでメモ。

SAStrutsでリダイレクトした画面で一度だけメッセージを表示したい場合の処理コード。用途としては、処理完了後の完了メッセージを表示したいというケースで使える。

Actionクラス
public HttpSession session;

@Execute
public String finish() {
    ...
    ActionMessages messages = new ActionMessages();
    messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("xxx"));
    ActionMessagesUtil.saveMessages(session, messages);

    return "xxx.jsp";
}
JSP
<html:messages id="message" message="true">
    <p>メッセージ:${message}</p>
</html:messages>

今回、のmessage="true"を入れていなかったため、メッセージが表示されないという事態に陥ってしまった。この属性は、通常のメッセージの場合(saveMessages()を呼んだ場合)はtrue、エラーメッセージ(saveErrors()を呼んだ場合)はfalseに設定するらしい。

”普通のメッセージですか?”という属性なのね。個人的にはerror="true"とか指定できたほうが分かりやすい気がする。