SAStruts for Portlet (Ajax編)

SAStruts のチュートリアルに Ajax のものがあったけど、今までポートレットではどうすりゃいいのだろうっと思いつつ、放置してきました(^^; で、ちょっと必要になったので、確認してみました。チュートリアルでは、jQuery を使って、load すれば簡単に実行メソッドが呼ばれるのだけど、以下のままだと動かない。

<input type="button" value="hello"
onclick="$('#message').load('hello');"/>

まぁ、参照する場所が違っているから当たり前なのだけど。というわけで、コンテキスト名からフルで呼ぶ。

<input type="button" value="hello"
onclick="$('#message').load('/sa-struts-tutorial/ajax/hello');"/>

みたいな感じ。これは楽チン(名前空間問題はどうするかは、#messageにくっつけておけば良さそうかな)。

SAStruts for Portlet: IndexActionまわり

OSC のデモ準備をして、Dolteng でプロジェクト作ったりしているのだけど、一つ問題発見・・・。いつも、IndexAction でアクション処理をしないで(つまり、/WEB-INF/view/index.jsp)、ディレクトリとか作って HogeAction みたいにしてやってたのだけど(つまり、/WEB-INF/view/hoge/index.jsp)、この IndexAction でアクション処理させると問題があることに気がつく。S2FormTag のとこで、IndexActionForm が見つからんといわれる。調べたら、HogeAction のときは、S2FormTag で container.hasComponentDef されるから moduleConfig に値が入るのだけど、IndexAction のときは、hasComponentDef されるタイミングがないから、失敗してしまう。ポートレットでのアクション処理は、doView のときにRoutingFilterでのhasComponentDefをすっ飛ばすから moduleConfig に入らんのよね。ポートレットのS2FormTagをいじるのが良さそうだけど、またあとで考えよ・・・(というわけで、ひとまず、ポートレットのときは、/view/ の下に一つ掘ってくださいませ)。

これ調べてたら、OSCの準備作業があまり進まなかった・・・。

SAStruts for Portlet

PALポータルの WCM で SAStruts を使っているのだけど、Cooldeploy にしたら、問題発覚・・・。原因は、ポートレットクラスで ActionServlet を new しているのだけど、S2ContainerServlet より後になっているのが悪いみたい。というわけで、new するのはやめて、サーブレットコンテナが new したやつを使いまわすように変更。というわけで、今日中に 1.0.0-rc2 を置く予定。

追記: 1.0.0-rc2 を置きました。