S2JSFページ遷移

2)ページ遷移におけるパラメータの受け渡し
Ex.08

01:<html xmlns:m="http://www.seasar.org/maya">
・・・
01:<body>
02:  <form>
03:    <input type="button" value="Hello" m:action="#{testAction.goHello}">
04:      <span m:inject="f:param" m:name="arg1" m:value="data1"/>
05:    </input><br/>
06:    <a m:action="#{testAction.goHello}">Hello
07:      <span m:inject="f:param" m:name="arg1" m:value="data1"/>
08:    </a>
09:  </form>
10:</body>
11:</html>

Ex.03においてパラメータの指定を追加してみましょう。
03行目のbuttonタグの子タグのparamタグでページ遷移の際のパラメータを指定する事が出来ます。
06行目のanchorタグの子タグも同様に、paramタグでページ遷移の際のパラメータを指定する事が出来ます。
では、Actionクラスでのパラメータの指定を見てみましょう。
S2JSFは、MethodBindingで指定したメソッドを呼び出す前にsetterメソッドの定義されている
プロパティが無いか調べ、もしある場合はプロパティ名と同様の変数が、リクエスト属性、
パラメータ、セッションの属性、S2Containerに存在するか調べ、もし存在する場合には
自動的にsetterメソッドを呼び出し、その変数を設定します。
ActionクラスにsetArg1()メソッドを定義しておけば、S2JSFが自動的にパラメータの値を設定してくれます。
それでは確認してみましょう。

Ex.09

01:package examples.jsf.action.impl;
02:public class TestActionImpl implements TestAction {
03:    public String goHello() {
04:        System.out.println("called TestActionImpl#goHello arg1=" + this.arg1);
05:        return "hello";
06:    }
07:    private String arg1;
08:    public void setArg1(String arg1) {
09:        System.out.println("called TestActionImpl#setArg1 arg1=" + arg1);
10:        this.arg1 = arg1;
11:    }
12:}

Ex.06にsetterメソッドを追加してみました。
Ex.08にてページ遷移を実行した場合に、以下の出力を確認することができます。

                                                                                                                                                                  • -

called TestActionImpl#setArg1 arg1=data1
called TestActionImpl#goHello arg1=data1

                                                                                                                                                                  • -