Red > Green > Refactor > Red

cycle is based on desire

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.ActionCallerClassexecute() が実行され

/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