SAStruts for Portlet

ひとまず、現状分をコミット。実行メソッドでパスを指定されているときにも対応(renderフェーズでは未対応。あまり必要ないかなっと)。あとは、javadocを足してみたりと。PALのポートレットたちでテストしつつ、今月末くらいにはバージョンを固定しよっと。

SAStruts for Portlet

sastruts-portlet ですが、現状、rc なリリースを続けていますが、いよいよ、それを取ろうかと。取るにあたって、ちょっと直すことがあったりする。現在のところ、実行メソッドで jsp を返す場合は良いのだけど、実行メソッドに飛ぶようなパスを返すと、うまくいかない。まぁ、ここはポートレットのフレームワークを作る悩ましい問題なのだけど。そんなわけで、ここ数日、これをどう直すべきかを試行錯誤中(結構、ややこしくて・・・)。という感じで、それを直したら、1.0.0 にする予定です。がんばろ。

エラーメッセージの表示順

SAStruts でバリデーションエラーとかの表示順についてはまる。アクションフォームで複数の public フィールドに対してアノテーションをくっつけて、バリデーションエラーを起こすと、public フィールドの順番に表示される(まぁ、これも Java の仕様的には保証されてはない気がするけど、Sun の JVM では順番どおりで出してくれるから良しとする)。

っで、そのアクションフォームに public フィールドに加えて、それらの setter/getter とか記述しちゃうと、順番がおかしくなる・・・。原因は、S2 の BeanDesc で setupPropertyDescs()、setupMethods()、setupFields() の順番に実行していく過程で setupPropertyDescs() で Class#getMethods() の順番で、先に propertyDescCache が作られてしまう・・・(というわけで public フィールドの記述した順じゃなくなる)。そんで、 SAStruts の ActionCustomizer の setupValidator でバリデータが突っ込まれているみたい。というわけで、順番が不自然になる(場合がある、という方が正しいのか)・・・。

はて、どうしたものか・・・。BeanDesc のフィール順で並び替えるとかかな(これも Java の仕様的には保証されないと思うけど、Sun の JVM だと public フィールド順になると思うから、これはこれで良しとしておく)。