JSF ActionListener示例

2018-02-22 12:22 更新

JSF教程 - JSF ActionListener示例


我們可以處理用戶點(diǎn)擊事件為h:commandButton或h:link。

要注冊事件處理程序,我們可以傳遞UI Component的actionListener屬性中的托管bean方法的名稱。

或者我們可以選擇實(shí)現(xiàn)ActionListener接口,并將實(shí)現(xiàn)類名稱傳遞給UI Component的actionListener屬性。

以下代碼顯示了如何從h:commandButton向actionListener屬性添加用戶定義的方法。

public void updateData(ActionEvent e){
   data="Hello World";
}

使用上面的方法

<h:commandButton id="submitButton" 
   value="Submit" action="#{userData.showResult}"
   actionListener="#{userData.updateData}" />
</h:commandButton>

以下代碼顯示了如何實(shí)現(xiàn)ActionListener和使用f:actionListener標(biāo)簽。

public class UserActionListener implements ActionListener{
   @Override
   public void processAction(ActionEvent arg0)
   throws AbortProcessingException {
      //access userData bean directly
      UserData userData = (UserData) FacesContext.getCurrentInstance().
         getExternalContext().getSessionMap().get("userData"); 
      userData.setData("Hello World");
   }
}

使用偵聽器方法

<h:commandButton id="submitButton1" 
   value="Submit" action="#{userData.showResult}" >
   <f:actionListener type="com.tutorialspoint.test.UserActionListener" />
</h:commandButton>

例子

以下代碼來自ActionListener.java。

package cn.w3cschool.common;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;

public class MyActionListener implements ActionListener{

  @Override
  public void processAction(ActionEvent event)
      throws AbortProcessingException {
    
    System.out.println("Any use case here?");
  
  }
  
}

以下代碼來自result.xhtml。

<?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"
      >
    <h:body>
    #{normal.buttonId}
    </h:body>
</html>

以下代碼來自demo.xhtml。

<?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"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      >
    <h:body>
    <h:form id="form">
      <ui:remove>  
      <h:commandButton id="submitButton" 
        value="Submit" action="#{normal.outcome}" 
        actionListener="#{normal.printIt}" />
      </ui:remove>
      <h:commandButton id="submitButton" 
        value="Submit" action="#{normal.outcome}" >
        <f:actionListener type="cn.w3cschool.common.MyActionListener" />
      </h:commandButton>
    </h:form>
    </h:body>
</html>

下面的代碼來自UserBean.java。

package cn.w3cschool.common;


import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
 
@ManagedBean(name="normal")
@SessionScoped
public class UserBean implements java.io.Serializable{

  public String buttonId="m.hgci.cn"; 
  
  public String getButtonId() {
    return buttonId;
  }

  public void setButtonId(String buttonId) {
    this.buttonId = buttonId;
  }

  public void printIt(ActionEvent event){
    //Get submit button id
    buttonId = event.getComponent().getClientId();
  }
  
  public String outcome(){
    return "result";
  }
}
下載 ActionListener.zip

運(yùn)行

將生成的WAR文件從目標(biāo)文件夾復(fù)制到Tomcat部署文件夾并運(yùn)行Tomcat-Install-folder/bin/startup.bat。

Tomcat完成啟動(dòng)后,在瀏覽器地址欄中鍵入以下URL。

http://localhost:8080/simple-webapp/demo.xhtml
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)