「Struts2 ベストプラクティス」の版間の差分
提供: tknotebook
(→Conventionプラグインを入れてアノテーションを使う) |
|||
10行: | 10行: | ||
但し、複数のアクションや複数の画面に共通の設定は struts.xml に書くしかないです。 | 但し、複数のアクションや複数の画面に共通の設定は struts.xml に書くしかないです。 | ||
− | + | ==Conventionプラグインを入れて既定の jspファイル名を使う== | |
− | + | ||
+ | コンベンションプラグインを入れると、アクション実行後、既定で | ||
+ | |||
+ | /WEB-INF/content/<ネームスペース>/<アクション名>-<戻り値>.XXX(JSPなど) | ||
+ | |||
+ | にフォワード(Dispatch)されます。リダイレクトやチェーンなどをせず、JSP等を呼び出すだけの場合は | ||
+ | @Resultアノテーションを使わず、コンベンションプラグインが決めてくれるビュー名を使うことをお勧めします。 | ||
+ | |||
+ | こうするとアノテーションが簡潔になります。 | ||
;1アクションクラス=1画面=1個以上のアクション | ;1アクションクラス=1画面=1個以上のアクション |
2017年1月17日 (火) 09:35時点における版
メインページ>コンピュータの部屋#Java>Struts2 Tips
私なりにまとめたベストプラクティスです。
Conventionプラグインを入れてアノテーションを使う
アクションの設定を全て struts.xml で設定を行うより、Conventionプラグインを入れてアノテーションで設定を書く方が楽です。
但し、複数のアクションや複数の画面に共通の設定は struts.xml に書くしかないです。
Conventionプラグインを入れて既定の jspファイル名を使う
コンベンションプラグインを入れると、アクション実行後、既定で
/WEB-INF/content/<ネームスペース>/<アクション名>-<戻り値>.XXX(JSPなど)
にフォワード(Dispatch)されます。リダイレクトやチェーンなどをせず、JSP等を呼び出すだけの場合は @Resultアノテーションを使わず、コンベンションプラグインが決めてくれるビュー名を使うことをお勧めします。
こうするとアノテーションが簡潔になります。
- 1アクションクラス=1画面=1個以上のアクション
- struts2は1アクションクラス=1アクションが基本ですが、クラスが増えすぎます。アノテーションを使って1アクションクラス=1画面=1個以上のアクション という対応にすることをお勧めします。アクションはメソッドに割り付けます。
- アクションのURL は <コンテキストパス><アクションクラスに割り付けたネームスペース>/<アクション名>.action とすることを推奨します。
- 画面毎にネームスペースを分ける
- 画面=アクションクラス毎にネームスペースを別にすると、各画面で同じアクション名が使えて便利です。アクションクラス毎に @Namespaceアノテーションを使うことを推奨します。
- 画面の種類毎に java のパッケージを分ける
- struts2 では package-info.java に @ParentPackage アノテーションで付けることで、Javaのあるパッケージ、およびそのサブパッケージ全体に struts.xml 内で定義した package を継承することができます。画面の種類ごとに画面がstruts.xml 内で定義した 異なるpackage を継承する場合、アクションクラスの所属する java package を分けると便利です。
- バリデーションなしのメソッドはアノテーションで
- バリデーションの設定のある画面でバリデーションを行わずに画面を表示する場合、アクションは input や browse 等を使うことになっていますが、私は初期表示は showアクションに決めています。バリデーションの抑止は @SkipValidation アノテーションを使います。
- 同じ内容で複数のJSPは struts2 の includeタグを使う
- 結果を表示する JSP は、表示する内容は全く同じでも、Conventionプラグインによる命名では異なるファイル名になってしまうことがあります。この時は struts2 の includeタグ で中身を同じにしてしまうことを推奨します。