SAStruts

s:form でフラグメント識別子を扱えるようにする

SAStrutsやStrutsのfromではaction属性にフラグメント識別子付きのURIを指定するとエラーで怒られます。理由は action のマッピングを探しに行くときにフラグメント識別子を含めたまま探しに行ってるからですね。ということで、対応方法としては s:form や h…

SAStrutsのマッピング

SAStrutsでURLにハッシュ値(#hogeみたいなの)をのっけると アクション /#hoge に対応するマッピングが見つかりません。 といって怒られる。一覧を更新している場合とか、そこの場所に戻ってあげたいんだけど。。。

TomcatのフロントとしてのApacheの設定

状況とやりたいこと 静的ファイルはApache側で処理させる 静的ファイルはサブディレクトリにも散在している SAStrutsなので拡張子での振り分けはムリ(設定変えればできるけど.doとか付けたくないし) トップページは動的なので、ディレクトリで分離するのは…

セッションにセットされるタイミング

SAStrutsでセッションにオブジェクトを持ちたい場合は、Serializableをimplementsして @Component(instance = InstanceType.SESSION) アノテーションを付けておけばいいんだけど、どうも書き込むタイミングが一連のトランザクションの最後になってそう。inte…

Actionの@ExecuteなメソッドのみにTxAttributeを設定する。

どうもデフォルトではできないようなので、TxAttributeCustomizerを継承してカスタマイズしてあげればできるけど・・・クラス名もイマイチだし、ここまでやる必要があるかどうかも。 validatorでコミットしました言われるのは確かに気持ち悪いけれども・・・…

TxAttributeCustomizer

TxAttributeCustomizerでトランザクションの指定をすると、publicな全てのメソッドに適用されます。 コンポーネントが持つすべてのpublicメソッドがトランザクション制御の対象になります。 SAStrutsではActionにvalidationを記述するんですがprotectedにし…

配列型のフォームプロパティ

例えばこんなの @Required @DateType public String[] hoge; 当然といえば当然だけど、検証した結果を パラメータが未送信であればnull キーのみ送信されれば値が空でも、@RequiredはTrueになる 各要素の中のデータタイプの検証はできない。@DateTypeって書…

Validatorで日付のデフォルトフォーマット

SAStrutsやS2Strutsならアノテーションだけで検証ができるんだけど、日付検証の場合大抵システムで決まった書式があるだろうからデフォルトで設定しておきたい。ということで、S2Strutsはdiconファイルにそんなことを書けた気がするのでSAStrutsでもできるか…

続・SAStrutsを組み込みサーバで動かしてみる

SAStrutsを組み込みサーバで動かしてみるの続き取りあえずJettyで起動できて、すんなりリクエストも発行してレスポンスをテキストベースで検証するところまでは完成。ただ気にくわない点が何個か。 アプリケーションディレクトリとして指定できるのが1つなの…

SAStrutsを組み込みサーバで動かしてみる

組み込みサーバで動かしてHTTPレイヤーからテストできる様にしてみたかったんだけど、どうも上手くいかんね。ほっとデプロイとかも動いてくれないかと思ったりしてGlassfishV3とかJettyとか色々と試してみたけどあんまりうまくいできないね。 また明日も挑戦…

続・ActionとServiceの責務

ActionとServiceの責務の続き。SAStrutsのサンプル(employee)を書くときに、最初は、ActionとServiceは分けていたんです。で、どうだったかって言うと、ActionはS2BeanUtilsを呼び出すコードだけがあり、Serviceには、S2JDBCを呼び出すコードだけしかない。 …

ActionとServiceの責務

SAStruts+S2JDBCを使った開発では ServiceはEnthity単位に ロジックはActionに記述する ユースケース内のコードシェアは抽象クラスで 広範囲のコードシェアはLogicなりユーティリティなクラスで という感じみたいですが、ちょっと悩みどころが。よく1つのテ…

ActionWrapper#processErrorsの処理のカスタマイズ。

SAStrutsではStrutsのActionクラスをラップしたActionWrapperがexecuteを実行しているのでActionWrapper#processErrorsで対処してあげればいいです。 ActionWrapperのサブクラスMyActionWrapperをつくって、processErrorsのみオーバライドしたあとに、MyActi…

SAStrutsでValidationのタイミングを制御する。

S2StrutsでValidateエラーの表示タイミングを制御するでアノテーションで指定したvalidationと独自に実装したバリデーションを同じタイミングで動作させる事をやったんですが、SAStrutsでも同様な事をしたかったのちょっと調べてみる。ほとんど同じ方法でで…

SAStrutsのValidationの結果をtext/html以外で戻す。

SAStruts(Struts)でValidationの検証結果、エラーがあった場合通常のWebであればhtml上に表現するんですが、AJAXやRESTな使い方をしている場合、XMLやJSONなんかで戻したいものです。簡単な方法はvalidationのinput属性にエラー専用のActionを用意して、そこ…

SAStrutsのFormフィールドのアノテーションをJavaDocに出力してみる。

Formのフィールドに着ける検証用のアノテーション(@Requiredや@IntegerType)といった内容をJavaDocに出したかったんだけど、アノテーションクラスに@Documentedがついてないのででない。Formの内容をJavaDocだけで周知したいんだけどな。なんか他に出す方…

SAStrutsでAction Chain

Actionの戻り値を次のActionのパスにすれば普通にできた。

アプリケーションルート直下のアクションのURI

SAStrutsでアプリケーションコンテキスト直下のに/hoge みたいなアクションを作りたいんだけど、どうも302でリダイレクトされて/hoge/になってしまう。メソッドアノテーションで urlPattern=""をつけてみたんだけどやっぱりダメだった。 /hoge/methodとすれ…

SAStrutsでS2Strutsのように*FormなクラスをSmartDeployしてみる

SAStrutsではFormはSmartDeplayの対象になっていません。DTOをActionのフィールドにするようなルールです。SAStrutsの規約に従うのも良いんですが、リクエストからセットされるフィールドは全てString型にしたかったのでDTOとは区別したいです。そこでAction…