S2JSFページ遷移
1.2)JavaBeansのメソッドを呼び出す方法
Ex.03
01:<html xmlns:m="http://www.seasar.org/maya"> ・・・ 02:<body> 03: <form> 04: <input type="button" value="Hello" m:action="#{testAction.goHello}"/><br/> 05: <a m:action="#{testAction.goHello}">Hello</a> 06: </form> 07:</body> 08:</html>
Ex.01をJavaBeansのメソッドを呼び出す方法に変更してみました。
04行目の
<input type="button" value="test" m:action="#{testAction.goHello}"/>
でボタンがクリックされた際に、JavaBeansのメソッドを呼び出す設定をしています。
ボタン及びリンクのaction属性で、#{変数名.メソッド名}のように記述することを
MethodBinding(メソッドバインディング)と呼びます。
MethodBindingで呼び出されるメソッドは、引数が無く戻り値がStringでなければいけません。
testActionはexample/jsf/dicon/page.diconで次のように定義されています。
Ex.04
<component name="testAction" class="examples.jsf.action.impl.TestActionImpl" instance="request"/>
Actionクラスは、画面で入力された内容をプロパティ経由で受け取ることになるので
componentのinstance属性にrequestを設定します。
それではTestActionインターフェース、TestActionImplクラスを見てみましょう。
Ex.05
01:package examples.jsf.action 02:public interface TestAction { 03: public String goHello(); 04:}
Ex.06
01:package examples.jsf.action.impl; 02:public class TestActionImpl implements TestAction { 03: public String goHello() { 04: return "hello"; 05: } 06:}
Ex.06の04行目で、遷移先ページ名を指定しています。
これはEx.02で指定したページ名と同様です。
MethodBindingで呼び出したメソッドの戻り値がnullの場合は、自分自身に遷移する事になります。