SAStruts
SAStrutsではなく、生Strut向けに書かれていますが、 私はSAStrutsのコードを書いている時に、 以下のサイトを良く活用させてもらっています。 忘れっぽいエンジニアの Jakarta Strutsリファレンス http://struts.wasureppoi.com/ サンプルコードもあるし、…
結局のところは、JSP内でゴリゴリは極力避けるべきという結論に行き着くんですかね。 MVCパターンに従う必然性は無いのですが、MVCに従って役割分担すれば、 そういう結論が得策に思えます。 理由は以前のコメントにも書かせていただいたのですが、次のよう…
JSTLのfn:joinで配列を指定の文字で連結する JSTLを使って、配列を指定の文字で連結するにはfn:joinを使用します。 fn:joinの引数は、1番目が配列で、2番名が連結文字です。 具体的な使用例はこんな感じ。 <% String[] fuga = {"aaa", "bbb", "ccc"}; requ…
SAStrutsは、いざとなったらJSPのスクリプトレットでゴリゴリやれてしまうのが、1つのメリットだと思う。 ただ、JSPのスクリプトレットは、ソースコードのメンテナンス性を悪化させやすいので、極力避けたいところ。 とはいえ、taglibやFunctionで対応する…
先日、社内のRailsな人にSAStrutsのことを軽く説明する機会がありました。 以前のエントリーに書いた『画面に表示するデータを準備する』メソッドの 名前は遷移先のjspファイル名にあわせる、という非公式の私のお作法を説明した後に、 以下のようなコードを…
従来のStrutsであれば、「通常のアクション」が XxxActionだとすると、 「画面初期化用のアクション」は InitXxxAction とするのが慣習でした。 SAStrutsでは従来のStrutsと異なり1つのアクションが 複数の実行メソッドを持つことができます。 このアーキテ…
SAStrutsとStrutsはアクションのコンポーネントの スコープが異なっているので注意しなければならない。 アクションのスコープの違い Struts singleton SAStruts request 生Strutsのアクションが持つフィールド 複数のスレッド間で共有される一方、 冗長化構…
SAStrutsのチュートリアルの「リッチなエラーページ」と 「ResourceSynchronizer」の組み合わせはマジですごい! どんな感じでスゲーのかはを順を追ってみてみましょう。 1.Exception発生時に表示されるページ 初期表示はスタックトレースですが、左側のツ…
JSPファイル内の記述方針についてですが、 「カスタムタグ」と「EL式」の使い分けに悩みそうだ。 足し算フォーム(タグリブベース) <s:form action="/add"> <html:text property="arg1"/> + <html:text property="arg2"/> = <c:out value="${result}"/> <html:submit property="submit" value="サブミット" /> </s:form> 足し算フォーム(EL式ベース)
入力値を受け取るためのプロパティは、バリデーションエラーになっても値を格納できるように プロパティの型をStringあるいはbooleanで定義してください。 SAStrutsはかなりいい感じだと思っています。 ただ、上記の仕様はおそらくStruts本体の制約とはいえ…
public class LogoutAction { public HttpSession session; @Execute(validator = false) public String index() { session.invalidate(); return "logout.jsp"; } } Super Agile Strutsチュートリアル(※)にあったLogoutAction のクラス。 いいですねぇ。 …
チュートリアルのダウンロードのソース見てたら「あれ?これパクれば Ajax できるんじゃね?」と思ってさっそくやってみた。クラス名とか気にしないで・・・。 すぱいだー日記さんにインスピレーションを受けて SAStrutsで自前AjaxアノテーションとAOPを使っ…
あるアクションから以下のようにHogeActionのfugaメソッドを リダイレクトで呼ぶことは可能でした。 return "/hoge/fuga?redirect=true"; しかし、以下のようにあるアクションから以下のように HogeActionのfugaメソッドをフォーワードで呼び出そうとすると …
SAStrutsのアーキテクチャにおいて、それぞれの処理をどのクラスに 記述するのが良いかの検討を引き続き行う。 下図はブラッシュアップした現時点での判断チャート。 順を追って説明してみる。 ユーティリィティ的な処理か? 何を持ってユーティリィティ的な…
1つユースケースに閉じていることは、すべてActionに記述し、複数のユースケースで使われるものをLogicに分割するのがシンプルでわかりやすいのではないかと、そう思ったわけです。 <<中略>> 追記2:コメントへの回答ですが、ユーティリティは、staticメ…
書きたいことは色々ありますが、 まずは、次のような心づかいのあるエラーメッセージにとっても感激! エラーの原因だけではなく、解決案を提示してくれている。 - org.seasar.struts.exception.ExecuteMethodNotFoundRuntimeException: [ESAS0004]クラス(tu…