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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-