SAStruts for Portlet

https://www.seasar.org/svn/sastruts/trunk/sa-struts-portlet/

にコミット。結構、辛い戦いだったが、ボタンなどサブミットされたときのアクション処理はprocessActionで実行するように変更。これにより、リダイレクトも普通に処理されるはず。そんで、ファイルアップロードも動いているみたい(特に何もしないでも動いた)。まぁ、こういう作りの方が自然だな。そんでもって、ブラウザの戻るボタンのサポート。サーブレットでは必要ないのだろうけど、結構、これも面倒で、ポートレットの場合、単純に再描画が実行されることがあったりするから、デフォルトで10個状態を保存している(Teedaのポートレット対応も同じ方法で状態を管理する必要があるんだろうな・・・疲れたから後日考える)。まだ、例外処理部分で怪しいところがあると思うけど、sa-struts-tutorial も JavaScript の名前空間とかの問題以外は動いていると思う(一部、a タグのリンクを s:link に書き換える必要はあるけど)。あと、ダウンロードのやつも直接レスポンスを呼ぶから動きません。個人的には、結構、いい感じに動いていると思うので良しとしよう。使い方とかは、あとでまとめよっと(ぼちぼち一段落しないと他の作業がたまるし・・・)。

SAStruts for Portlet

リダイレクトは、やっぱり processAction で何とかしたいな~、ということで知恵を絞る。っで、いろいろと見た感じだと、S2RequestProcessor の process(request,response) 処理で exportPropertiesToRequest のところまでを processAction で処理して、その状態(JSPのパスやリクエストのAttributeなど)を保持して、続きを render でやれば良さそうな気がしてきた。まだ細かい問題があるけど、そんな感じで修正したら、動くと思う。まぁ、これするのに processActionでサーブレットにディスパッチができないから、ポートレットの中でサーブレットを初期化してインスタンスを保持して、サーブレットフィルタの実行環境を書いたりと・・・。これらが一段楽したらコミットしよっと。結構、勉強になった。