「Struts2 ベストプラクティス」の版間の差分

提供: tknotebook
移動: 案内検索
(Conventionプラグインを入れてアノテーションを使う)
10行: 10行:
 
但し、複数のアクションや複数の画面に共通の設定は struts.xml に書くしかないです。
 
但し、複数のアクションや複数の画面に共通の設定は struts.xml に書くしかないです。
  
;Conventionプラグインを入れて既定の jspファイル名を使う
+
==Conventionプラグインを入れて既定の jspファイル名を使う==
:Conventionプラグインを入れると、アクション処理後の ビューのファイル名は jsp の場合 /WEB-INF/content/<ネームスペース>/<アクション名>-<戻り値>.jsp になります。JSPを呼び出すだけの場合は Resultアノテーションを使わず、このConventionを利用することをお勧めします。
+
 
 +
コンベンションプラグインを入れると、アクション実行後、既定で
 +
 
 +
/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タグ で中身を同じにしてしまうことを推奨します。