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)