JSF 2のactionListenerの例
JSFでは、ボタンまたはリンクコンポーネント(例:
h:commandButton
または
h:commandLink
)をクリックすると、「
Action Events
」が起動します。
このアクションリスナーの一般的な使用例は、コンポーネントに添付されている属性値を取得するために使用されます。このリンク://jsf2/jsf-2-attribute-example/[JSF 2 f:属性の例]を参照してください。
これを実装するには、次の2つの方法があります。
1.メソッドバインディング
ボタンまたはリンクコンポーネントでは、Beanのメソッドを ”
actionListener
“属性で直接指定できます。
__JSFページ…
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
>
<h:body>
<h1>JSF 2 actionListener example</h1>
<h:form id="form">
<h:commandButton id="submitButton"
value="Submit" action="#{normal.outcome}"
actionListener="#{normal.printIt}"/>
</h:form>
</h:body>
</html>
Managed Bean …
アクションイベントをインタラクトするメソッドは、
ActionEvent
パラメータを受け入れる必要があります。
package com.mkyong;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
@ManagedBean(name="normal")
@SessionScoped
public class NormalBean{
public String buttonId;
public void printIt(ActionEvent event){
//Get submit button id
buttonId = event.getComponent().getClientId();
}
public String outcome(){
return "result";
}
}
2. ActionListener
ボタンまたはリンクコンポーネントで、内部に「
f:actionListener
」タグを追加し、
ActionListener
インターフェースの実装クラスを指定し、
processAction()
をオーバーライドします。
__JSFページ…
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
>
<h:body>
<h1>JSF 2 actionListener example</h1>
<h:form id="form">
<h:commandButton id="submitButton"
value="Submit" action="#{normal.outcome}" >
<f:actionListener type="com.mkyong.NormalActionListener"/>
</h:commandButton>
</h:form>
</h:body>
</html>
ActionListenerインターフェースの実装
package com.mkyong;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;
public class NormalActionListener implements ActionListener{
@Override
public void processAction(ActionEvent event)
throws AbortProcessingException {
System.out.println("Any use case here?");
}
}
ソースコードをダウンロードする
ダウンロードする – リンク://wp-content/uploads/2010/11/JSF-2-ActionListener-Example.zip[JSF-2-ActionListener-Example.zip](10KB)
リファレンス
JavaDoc]
リンク://タグ/jsf2/[jsf2]