SAStruts

検証用アノテーションでバリデータが動く仕組み

ActionCustomizerで検証用アノテーションから設定情報を構築している。バリデータが実際に動くのはActionWrapperの中。ちょっとした拡張を試みる時にいつも忘れるので自分用にメモ。

ファイルアップロードの上限サイズを超えてもindexメソッドに制御が移らないケース

ファイルアップロードの上限サイズを超えた場合について、SAStrutsのサイトでは以下のように記述されています。 アップロードされたファイルのサイズが、あらかじめ決められた上限(struts-config.xmlのcontrollerタグのmaxFileSize属性の値) を超えた場合、S…

Hot Deploy利用時に、Hot Deploy対象外クラス内でHot Deploy対象クラスを使うための正しい作法は?

「Hot Deploy」「Hot Deploy」連呼によって、今までで一番長いタイトル。。気を取り直して本題を。SeasarのHot Deploy機能はアプリケーションサーバーの再起動不要で修正コードがすぐに反映されるという便利な反面、ちょっとフレームワークの拡張をした時に…

S2RequestProcessorとインターセプターは相性が悪い?

ActionMessagesExceptionをキャッチしたら前ページへ、@Execute(roles="xxx")で権限なし例外があったら指定されたページへ、それ以外の例外は指定したページへ・・・みたいな感じにしたかったんだけど、ちょっとうまくいかない。というのも権限チェックはS2R…

実行メソッドのindexメソッドは必ず必要?

SAStrutsに限った話ではないですが、WEB-INF/web.xmlに以下のように404エラーのエラーページ設定を入れておけば、存在しないURLへアクセスすると指定したエラーページへ遷移させることが出来ます。 <error-page> <error-code>404</error-code> <location>/WEB-INF/view/error/404NotFound.jsp</location> </error-page> 色々なURLを打…

ActionFormについて思うこと

先々週辺りに発覚したActionのpublicフィールドの予期せぬ自動バインドの問題。→参照:ぱる日記 これを受けて次のリリースからはActionFormの使用を推奨するようで、それに伴ってか、ActionForm周りで色々と動きがありそうです。 ActionFormの名前はxxxDtoか…

Entity単位のServiceに共通の親クラスを持たせる

元ネタは続・SAStruts + S2JDBCのアーキテクチャに載っていたServiceで共通的に使うメソッドを共通親クラスに抽象化したメソッドで持たせるという考え。ジェネリクスを使ったクラス設計なぞしたことが無い自分には良い刺激を受けました。 元記事ではユースケ…

HOT deployとCOOL deployで挙動が違う?

少し前に各所で話題にのぼっていたid:cypher256さんの一連のSAStruts関連のエントリー。実際の案件に適用しての話なので、すごく参考になります。このエントリーの中で@Reset アノテーション - cypher256's blogを試してみたのですが、なぜか動かない。 デバ…

メッセージの渡し方

生StrutsのActionクラスではsaveMessagesメソッドを使えば、ビューへメッセージを渡せますが、SAStrutsではどうやって渡すのか調べてみたら、ActionMessagesUtilというユーティリティクラスが用意されていました。Actionクラスでの使い方は以下のような感じ…

カレントパスを気にせずにjspにcssファイル等のパスを指定する方法

同じjspを使う場合であってもurlが/employeeと/employee/indexなどとカレントパスが異なる場合があるので、jsp内でcssファイルなどを相対パスでベタ書きした場合には、どちら一方は正しくないパスとなってしまいます。なにかSAStruts側で用意されていないか…

global-exceptionsでキャッチできるのはRuntimeExceptionのサブクラスのみ?

Exceptionのサブクラスをstruts-config.xmlのglobal-exceptionsに定義していもキャッチできず、RuntimeExceptionのサブクラスであればキャッチできました。これって生Strutsの仕様だったかなぁ?S2Strutsを使っていた時にはExeptionのサブクラスでもキャッチ…

インターセプター内でもJdbcManagerがインジェクションされる

Action用のインターセプター内でDB接続したかったので色々試していたら、Actionと同様にJdbcManagerをpublicフィールドで定義しておけば自動的にインジェクションされた! public class HogeInterceptor extends AbstractInterceptor { public JdbcManager j…

JDBCレルム認証で権限管理

『Executeアノテーションでつけられるroles属性によって、ユーザのロールによってアクセス制御をかけることができる』ということは、 マニュアルを見れば一目瞭然なのですが、DBを使ってユーザー認証をした後にロールをどうやってセットすればよいのかが分か…

SAStrutsことはじめ

次のJAVA案件をSAStruts+S2JDBCでいってみようかと現在調査中。Seasar2の経験はSeasar2.3+S2Struts(設定ファイル有)+S2Daoの構成で数回あります。 過去の資産があるので、わざわざSAStrutsを使う必要も無いかと思ったのですが、 ここのところずっとPHP…