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でサーブレットにディスパッチができないから、ポートレットの中でサーブレットを初期化してインスタンスを保持して、サーブレットフィルタの実行環境を書いたりと・・・。これらが一段楽したらコミットしよっと。結構、勉強になった。

SAStruts for Portlet

やっと一段落。sa-struts-tutorial でいろいろと動作確認しているけど、基本的な部分は動いている気がする(トークンチェック以降は動かないものもあるけど)。ファイルアップロードについては、あとで対応しようかと。今回対応した内容だけど、JSR 168 の範囲内でできるようにがんばった。処理は基本的に render でしている。processAction だと、サーブレットにディスパッチできないので、何かのアクション時の処理は processAction で一時的にセッションに保存して、render でそれを取り出して、処理している。まぁ、ちょっと問題があって、render だと、リダイレクトができないので、仕方がないから javascript で出力後にリダイレクトしている(JSR 168 内でやろうとすると、これは仕方がない気もする。これはカスタマイズしやすいようにした方がいいかもな・・・)。

そんな感じで、調査から始めて1週間くらいかかりそうだなっと思っていたら、予定通りみたいな感じ(早く終わらしたかったのだけど)。本当は、Struts ブリッジがきれいに動くんだったら、そこをスクラッチしなくて済んで早く終わったはずだったのだけどな。というわけで、SAStruts も Seasar Conference のプレゼン資料に入れる方向ですすめよっと。

SAStruts for Portlet

今週は、これとかなり戦っている・・・。だいぶ疲労気味・・・。今週始めから調査・対応方法の検討をしているけど、現在は対応方法の方向を変更している。今週始めのころは、Apache Portals の Struts ブリッジを使おうと思って進めていたのだけど、どうも、これが私の求めるものと違っている感じ(個人的な感覚だけど、コードの美しさに欠ける気がして)。というわけで、昨日から Struts とポートレットをつなぐ部分から書きはじめた。現状は、そんな感じの方向で作り始めていて、内容的には、ポートレットからサーブレットの環境をエミュレートして、SAStruts からはポートレットであることが見えないようにしようかと。というわけで、SAStruts には特に変更を入れないでも動くだろうと思っている。現状の実装レベルは、表示されるようにはなったけど、アクションが処理されない感じ。まぁ、他にもマルチパートのサポートとか、htmlやbodyなど入らないタグを削除するとか、細かい話は残ると思うけど、今日は大きなところでざっくり動くところまで持っていきたい感じ。SC2008の資料も更新しなきゃならないから、早く一段楽させないと・・・。