SAStrutsまとめ
SAStruts+S2JDBCでアプリケーションを構築するに当たって前調べしたことを纏めてあります。基本的なことからアーキテクトまで広く利用できるようなリンク集&コメントです。
-
- エンドユーザーの説得方法
種類 | インスタンス定義 | 自動バインディング | インターフェース | 抽象クラス |
Action | request | auto | 対象外 | 対象外 |
Service | prototype | auto | 有効 | 有効 |
Dto | request | 無効 | 対象外 | 対象外 |
Dao | prototype | auto | 有効 | 有効 |
- Action
- URLルール
action.AddAction ⇒/ContextRoot/add/ action.add.IndexAction ⇒/ContextRoot/add/
s:formは/ContextRoot/add/という風にしか生成してくれない アクションは、複数の実行メソッド を持つことができ、 通常は、1ユースケースを1アクションにマッピングします。 複数の画面で構成される意味のある単位をユースケースだと、捉えればいいでしょう。 via http://dbviewer.blogspot.com/2008/06/sastruts11action.html
-
- プロパティについて
- publicでメンバ変数を設定してしまうと、リクエストでパラメータが渡ってきて、名前が一致した場合にDIしてしまうので、メンバはprotectedで宣言する。DIしたいメンバは@ResourceAnnotationで指定。
- プロパティについて
-
- Sessionオブジェクトの取得方法
- Seasar2.4.35以降ならhotdeploy時もこのコードでOK。以前はNG
- Sessionオブジェクトの取得方法
HttpSession session = (HttpSession) SingletonS2ContainerFactory .getContainer() .getExternalContext() .getSession();
- 例外処理
- ActionForm
-
- 確認画面ではActionFormから値を出力する。
- ActionFormに下記を設定
- 確認画面ではActionFormから値を出力する。
@Component(instance = InstanceType.SESSION)
-
-
- セッションからActionFormを削除するタイミングが必要なのでActionに以下を指定する。メソッドの実行終了時にActionFormからデータを削除してくれます。
-
removeActionForm = true
-
- publicフィールドについて
- 言いたいことは非常に判るんだが私のように古くからJavaを触っている人には少し抵抗があります。この手の実装は私個人的には若手にはあまり触らせたくないです。
- http://d.hatena.ne.jp/higayasuo/20070517/1179402832
- http://www3.vis.ne.jp/~asaki/p_diary/diary.cgi?Date=20080625#2008062501
- publicフィールドについて
- DTO&Entity
- DTOとEntityいいこと書いてある
- http://d.hatena.ne.jp/dewa/20080617/1213692369
- Entity
- エンティティは @MappedSuperclass が指定されたクラスを継承できます。
- Entityはもちろん型を意識します。
*.jsp false UTF-8 false /WEB-INF/view/common/common.jsp
-
-
- amaterasを利用している場合はエラーが出るので、プロジェクトの「プロパティ」-「amateras」-「ルート」に「/src/main/webapp」を記載してEclipseを再起動すればOKです。
-
- Serviceクラスについて
-
- S2AbstractServiceを用いたAction-Service-Logicパターン
- Serviceクラスは、Entityに対して1:1に対応します(または不要)、複数のEntityを扱う場合にはLogicとしてまとめておいた方が良いかもですね。
- http://d.hatena.ne.jp/dewa/20080707/1215400310
- S2AbstractServiceを用いたAction-Service-Logicパターン
-
- トランザクションの境界をServiceに変えるには。
- ActionのTestCase
- id:newtaさんが作ってくれているものを参考にしましょう。
- http://d.hatena.ne.jp/newta/20090810/1249920390