Teeda for Portlet

げ、ポートレット(?)環境でデフォルトロケールの処理がおかしい・・・。以下のスタックのうち、処理のどっかを見直すなどする必要がある気が。忘れないようにメモ・・・。明日考えよ。

at javax.faces.component.UIViewRoot.setLocale(UIViewRoot.java:155)
at org.seasar.teeda.core.application.ViewHandlerImpl.createView(ViewHandlerImpl.java:137)
at org.seasar.teeda.core.portlet.FacesPortlet.setViewId(FacesPortlet.java:503)
at org.seasar.teeda.core.portlet.FacesPortlet.restoreFacesState(FacesPortlet.java:394)
at org.seasar.teeda.core.portlet.FacesPortlet.renderFaces(FacesPortlet.java:254)
at org.seasar.teeda.core.portlet.FacesPortlet.doView(FacesPortlet.java:213)

Teeda for Portlet

FacesPortletまわりを見直す。とりあえず、goとjumpでActionURLを使って、Portlet#processActionを呼ぶようにする。その際に、リクエストパラメータをrenderに渡す必要があるので、その処理を加える。そこでふと思ったのだけど、goやjumpでボタンが押されるような場合にも、リクエストパラメータをrenderに渡した方がいいのかね・・・。リンクの場合は、渡すようにはしたんだけど。ボタンの場合は、渡すとなると、executeの処理内のどこかで、それを判断しないといかんな。と言う感じで、検討事項がいろいろとあるような・・・。次のリリースにこの辺を含めたいところ・・・。

Teeda for Portlet

いろいろといじる。とりあえず、ポートレット用のリスナとサーブレットを更新。あとは、ServletExternalContextUtilでいろいろと問題を食らうので、そこいらも見直す。基本的には、それをポートレットで呼ばれると落ちるので・・・。今の悩みどころは、FacesPortletでTeedaの初期化のコードを呼ぶかどうか・・・。MyFaces とかでは呼んでいたから、今まで呼ぶようにしていたけど、そもそもリスナやサーブレットで先に呼ばれちゃっているので、ポートレットで再度呼び出す必要はない気がしている。というわけで、現在、削除の方向で考えているけど、FacesPortletで呼び出さなきゃならん状況って、あるのだろうか・・・(ないんじゃないかな)。あとは、FacesPortletで状態をセッションに入れるようにしているけど、その状態クラスがシリアライズ可能になっていなかったので、これは付け足した。そうそう、あと、SessionPagePersistenceのisOutputlinkTransitionで、POSTじゃないことを確認しているけど、これはポートレットではどうすりゃいいのかな・・・。何か別のフラグを立てるようにするしかないのだろうか。これもちょっと悩みどころだな。