struts.xml の struts.action と struts.action.result 要素
struts.action について
(属性値の入力) | name | class |
---|---|---|
- | 必須 (パッケージ内で一意) |
任意 (入力の場合は存在する Java クラスを package 名付きで割当) |
(X)
<struts> <package name="top" namespace="/" extends="struts-default"> <action name="actionName" class="jp.co.pckg.to.ActionCallerClass"> </action> </package> </struts>
Struts2 には "action mappings"
という機能があり、
action は Java クラスをハンドルする為に識別子をマッピングする
リクエストが action名 と合致した時、Struts2 はこのマッピングを利用して
どのプロセスを実行すべきかを決定する
(X) の場合
actionName
という識別子を持ち、ハンドルするクラスは jp.co.pckg.to.ActionCallerClass
である
class 属性は省略可(Y)
struts.action.result について
(属性値の入力) | name | type |
---|---|---|
- | 任意 (属性を指定しない場合は自動で name="success") |
任意 (属性をしていない場合は自動で type="dispatcher") |
<struts> <package name="top" namespace="/" extends="struts-default"> <action name="actionName" class="jp.co.pckg.to.ActionCallerClass"> <result name="success">/index.jsp</result> </action> </action> </package> </struts>
ハンドルクラスの execute メソッドは
result
の name 属性で指定した値(String
) をレスポンスとして返す必要がある(Z)
返さない場合はサーバーエラー(動作確認より)
また、レスポンスの種類(type) を指定できる
struts.action, struts.action.result を用いて
/index.action
へ GET リクエストすると
jp.co.pckg.to.ActionCallerClass
の execute()
が実行され
/index.jsp
が dispatch される
(Y) の場合
つまり
(<action name="actionName" class="jp.co.pckg.toActionCallerClass">
)
ではなく
(<action name="actionName"
)
の時
/index.jsp
が render されるだけ
(Z) ActionSupport クラスで定義済の値一覧
String SUCCESS = "success" String NONE = "none", String ERROR = "error" String INPUT = "input" String LOGIN = "login"
これら以外で result.name の値を指定しても良い
(今回は省略)
[転載、及び引用元]
https://struts.apache.org/docs/result-configuration.html
https://struts.apache.org/docs/action-configuration.html#ActionConfiguration-Post-BackDefault