[Seasar-user:10236] Re: [Teeda]FacesMessageの次画面引継ぎについて

ISO [E-MAIL ADDRESS DELETED]
2007年 8月 31日 (金) 01:31:58 JST


大谷さん、米林さん お世話になります。

ISOです。
返信が遅れてしまい申し訳ありません。

(まとめよみモードから個別モードに切り替えたせいか、
メールが届かなかったのでもしかしたら別スレッドみたいな形になっているかもしれません、すみません。)


なるほど、
メソッドの戻り値で動作が違うのは、
redirectとforwardの違いだったんですね。

FacesMessageを引き継げないのは、
確かにソースを追ってみると、

FacesServletのserviceメソッドの最後に
context.release();としているみたいですね。

米林さんのブログでも詳細な解説をしていただいてありがとうございます。
JSF実装を始めて触るので、とても勉強になりました。
(というか、webアプリの初歩かもしれませんが。。。)

initializeメソッドにて以下のような感じで、期待していたメッセージの引継ぎを実現することができました。
ありがとうございます。


    // メッセージを保持するオブジェクト
        private MessageManager messageManager;

        // setter/getter

	public Class initialize() {

		MessageManager messageManager = getMessageManager();
		List<MessageModel> messageList = messageManager.getMessageList();

		int size = messageList.size();
		if (size < 0) {
			return null;
		}

		for (MessageModel messageModel : messageList) {
			String severity = messageModel.getSeverity();
			String messageId = messageModel.getMessageId();
			String componentId = messageModel.getComponentId();
			Object[] args = messageModel.getArgs();

            // メッセージ追加処理
			addFacesMessage(severity, messageId, componentId, args);
		}

		// 自身で保持しているメッセージをクリア
		getMessageManager().clear();

		return null;
	}


Seasar-user メーリングリストの案内