リクエストパラメータの取得の仕方です。
Action
リクエストパラメータを受け取るにはActionにsetterを書きます。ついでにgetterも書いておきます。
命名的にはset+「リクエストパラメータの名前の先頭を大文字にしたもの」です。例えばリクエストパラメータがnameの場合はsetNameとなります。
package ww2.examples.event; import com.opensymphony.xwork.ActionSupport; public class ParameterAction extends ActionSupport { private String word; public String execute() throws Exception { System.out.println(word); return SUCCESS; } public String getWord() { return word; } public void setWord(String word) { this.word = word; } }
xwork.xmlを変更
リクエストパラメータをActionにセットするのはinterceptorの役割ですので、xwork.xmlにその設定をします。
以下で設定しているdefaultStackはwebwork-2.1.7.jar内のwebwork-default.xmlに設定してあるもので、以下のinterceptorが順番に実行されます。
- servlet-config:Servlet関連のオブジェクトをActionにセット(ActionでParameterAwareなどを実装している場合)
- prepare:Actionのprepare()メソッドを呼ぶ
- static-params:xwork.xmlで設定してあるパラメータをActionに設定
- params:リクエストパラメータをActionに設定
- conversionError:ActionContextのエラーメッセージをActionにセットする
<action name="parameter" class="ww2.examples.event.ParameterAction"> <interceptor-ref name="defaultStack"/> <result name="success" type="dispatcher"> <param name="location">/WEB-INF/vm/parameter.vm</param> </result> </action>
parameter.vmを作成
parameter.vmではParameterActionのプロパティをそのまま使えます。
リクエストパラメータ:$word <form action="parameter.action"> <input type="text" name="word" /> <input type="submit" value="実行" /> </form>
実行
http://サーバ名:ポート/アプリケーション名/parameter.action?word=xxxにアクセスすると標準出力にxxxが出力され、test.vmの出力結果にXXXが出ていればOK。