SAStruts

忘れっぽいエンジニアのStrutsリファレンス

SAStrutsではなく、生Strut向けに書かれていますが、 私はSAStrutsのコードを書いている時に、 以下のサイトを良く活用させてもらっています。 忘れっぽいエンジニアの Jakarta Strutsリファレンス http://struts.wasureppoi.com/ サンプルコードもあるし、…

JSP内でゴリゴリは極力避けるべきか?

結局のところは、JSP内でゴリゴリは極力避けるべきという結論に行き着くんですかね。 MVCパターンに従う必然性は無いのですが、MVCに従って役割分担すれば、 そういう結論が得策に思えます。 理由は以前のコメントにも書かせていただいたのですが、次のよう…

リスト要素を指定の文字で連結するファンクションを自作してみる

JSTLのfn:joinで配列を指定の文字で連結する JSTLを使って、配列を指定の文字で連結するにはfn:joinを使用します。 fn:joinの引数は、1番目が配列で、2番名が連結文字です。 具体的な使用例はこんな感じ。 <% String[] fuga = {"aaa", "bbb", "ccc"}; requ…

いざとなったらスマートにJSPのスクリプトレットを使う

SAStrutsは、いざとなったらJSPのスクリプトレットでゴリゴリやれてしまうのが、1つのメリットだと思う。 ただ、JSPのスクリプトレットは、ソースコードのメンテナンス性を悪化させやすいので、極力避けたいところ。 とはいえ、taglibやFunctionで対応する…

よりスマートな画面遷移?

先日、社内のRailsな人にSAStrutsのことを軽く説明する機会がありました。 以前のエントリーに書いた『画面に表示するデータを準備する』メソッドの 名前は遷移先のjspファイル名にあわせる、という非公式の私のお作法を説明した後に、 以下のようなコードを…

実行メソッドのネーミングルールを検討してみる

従来のStrutsであれば、「通常のアクション」が XxxActionだとすると、 「画面初期化用のアクション」は InitXxxAction とするのが慣習でした。 SAStrutsでは従来のStrutsと異なり1つのアクションが 複数の実行メソッドを持つことができます。 このアーキテ…

SAStrutsとStrutsのアクションのスコープの違い

SAStrutsとStrutsはアクションのコンポーネントの スコープが異なっているので注意しなければならない。 アクションのスコープの違い Struts singleton SAStruts request 生Strutsのアクションが持つフィールド 複数のスレッド間で共有される一方、 冗長化構…

ResourceSynchronizerスゲー

SAStrutsのチュートリアルの「リッチなエラーページ」と 「ResourceSynchronizer」の組み合わせはマジですごい! どんな感じでスゲーのかはを順を追ってみてみましょう。 1.Exception発生時に表示されるページ 初期表示はスタックトレースですが、左側のツ…

「カスタムタグ」と「EL式」の使い分け

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本体の制約とはいえ…

LogoutAction

public class LogoutAction { public HttpSession session; @Execute(validator = false) public String index() { session.invalidate(); return "logout.jsp"; } } Super Agile Strutsチュートリアル(※)にあったLogoutAction のクラス。 いいですねぇ。 …

オレオレAjaxアノテーションで超簡単Ajax

チュートリアルのダウンロードのソース見てたら「あれ?これパクれば Ajax できるんじゃね?」と思ってさっそくやってみた。クラス名とか気にしないで・・・。 すぱいだー日記さんにインスピレーションを受けて SAStrutsで自前AjaxアノテーションとAOPを使っ…

あるアクションから別アクションへのフォワード

あるアクションから以下のようにHogeActionのfugaメソッドを リダイレクトで呼ぶことは可能でした。 return "/hoge/fuga?redirect=true"; しかし、以下のようにあるアクションから以下のように HogeActionのfugaメソッドをフォーワードで呼び出そうとすると …

どのクラスに処理を記述すべきか? 〜 Part2

SAStrutsのアーキテクチャにおいて、それぞれの処理をどのクラスに 記述するのが良いかの検討を引き続き行う。 下図はブラッシュアップした現時点での判断チャート。 順を追って説明してみる。 ユーティリィティ的な処理か? 何を持ってユーティリィティ的な…

どのクラスに処理を記述すべきか?

1つユースケースに閉じていることは、すべてActionに記述し、複数のユースケースで使われるものをLogicに分割するのがシンプルでわかりやすいのではないかと、そう思ったわけです。 <<中略>> 追記2:コメントへの回答ですが、ユーティリティは、staticメ…

SAStrutsをいじってみました

書きたいことは色々ありますが、 まずは、次のような心づかいのあるエラーメッセージにとっても感激! エラーの原因だけではなく、解決案を提示してくれている。 - org.seasar.struts.exception.ExecuteMethodNotFoundRuntimeException: [ESAS0004]クラス(tu…