result要素の属性には、以下の値が設定できる
name: マッピング名。省略した場合は"success"になる
type: Actionクラスの処理終了後に呼ばれるタイプ。省略した場合は"dispatcher"になる
tpyeに設定できる値としてデフォルトでは以下のものが設定できる
Type | 説明 |
---|---|
chain | 他のActionクラスを呼び出す |
dispatcher | viewにjspを使う |
freemarker | viewにfreemarkerを使う |
httpheader | HTMLのヘッダーのみ返す |
redirect | 他のURLへリダイレクトする |
redirectAction | 他のActionクラスへリダイレクトする |
stream | ファイルのダウンロードで使用 |
velocity | viewにvelocityを使う |
xslt | viewにxsltを使う |
plainText | viewにplainTextを使う |
上記の値はstruts-default.xml内のresult-typeに定義されている。
サンプルを使って説明
<package name="example" namespace="/hogehoge" extends="struts-default">
<action name="Foo" class="example.Foo">
<result>/example/Foo1.jsp</result>
<result name="input">/example/Foo2.jsp</result>
</action>
<package/>
- example.Fooクラスが"success"を返すと/example/Foo1.jspが呼ばれる。
- example.Fooクラスが"input"を返すと/example/Foo2.jspが呼ばれる。
struts-default.xml内に定義してあるもので要件を満たせなければ、com.opensymphony.xwork2.Resultインターフェース、もしくはそれらの子クラスを継承する形で自分で作れば良い。作ったものはstruts-default.xmlで記載してあるように<result-types>タグでくくって宣言すれば使えるようになる
<package name="example" namespace="/hogehoge" extends="struts-default">
<result-types>
<result-type name="freemarker2" class="example.FreemarkerResult2" />
</result-types>
<action name="Foo" class="example.Foo">
<result type="freemarker2">/example/Foo.ftl</result>
</action>
<package/>
0 コメント:
コメントを投稿