ネームスペースをセッションに入れるように PortletExternalContextImpl を修正したけど、まだ、アクションが実行されないな・・・。こりゃ、次の謎だな。まぁ、これは Tomahawk も絡んでいる可能性もあるから、まずは、セッション管理のビーン問題から見るかな。
カテゴリー: Seasar
Teeda for Portlet
ブログポートレットでcommandLinkでうまくアクションが呼ばれない問題があるのだが、スタックトレースをとったので、とりあえず、見てみる。すると、どうも、ライフサイクルの execute のところで、encodeNamespaceが呼ばれるため、落ちるみたい。encodeNamespace は基本的には、RenderResponse が必要なのだが、execute のところは、ActionResponse が入っているので、呼び出しはできん。MyFaces については問題ありの実装をしているので、参考にならないので、Sun の実装を見てみる。が、特に、encodeNamespace をしていないような・・・。ソースコードを検索しても見つからない。っていうことはこの問題は無視しているのね・・・。っていうかバグだろ。うーん、Teeda ではどうやって対応しよ・・・。ActionResponseのときは、セッションにしまっておいて再利用して呼び出すのがいいかな・・・。これで、また、一つ謎を解いたかな(あと、いくつあるのだろう・・・)。
Teeda for Portlet
少々、謎解きゲームの感じになってきているが、ちょっと前進。タグがめちゃくちゃになる問題で、2つほど問題がわかった。一つは、PageContextUtil#setCurrentFacesContextAttributeで、リクエストスコープを使うのはまずいというのと、FacesPortletでFacesContextがrelease されない場合が発生して、それがリクエストを超えて悪さをしている。というわけで、そこいらを修正。あとで、こみっとしておこ。っで、次の謎はセッションビーンが複数のポートレットで未だに共有されているっぽいと言うことかな。ほかには、Tomahawkが相変わらず、表示されないタグがあるっぽいと言うところ・・・(まぁ、これは後回しに・・・)。一つずつ謎を解いていこう。