JSFJSF用戶界面組件模型
JSF UI組件示例
JSF <h:inputText>標籤
JSF <h:outputText>標籤
JSF <h:form>標籤
JSF <h:commandButton>標籤
JSF <h:inputtextarea>標籤
JSF <h:commandLink>標籤
JSF <h:inputSecret>標籤
JSF <h:inputHidden>標籤
JSF <h:inputFile>標籤
JSF <h:graphicImage>標籤
JSF <h:message>標籤
JSF <f:ajax>標籤
JSF單選按鈕
JSF表單組合框
JSF列表框
JSF多選列表框
JSF輸出格式化
JSF輸出樣式
JSF <h:attribute>標籤
JSF <h:setPropertyActionListener>標籤
JSF操作事件
在JSF中,我們可以處理如<h:commandButton>
或<h:link>
組件的用戶點擊事件。要註冊事件處理程序,我們可以在UI組件的actionListener
屬性中傳遞託管bean方法的名稱。
或者也可以選擇實現ActionListener
接口,並將實現類名稱傳遞給UI 組件的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>
以下代碼顯示瞭如何實現ActionListener
並使用f:actionListener
標籤。
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.yiibai.test.UserActionListener" />
</h:commandButton>
實例
打開NetBeans,創建一個名稱爲:Actionlistener 的Web項目,其結構如下所示 -
以下是文件:User.java
文件中的代碼 -
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.yiibai;
/**
*
* @author Maxsu
*/
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
@ManagedBean(name = "normal")
@SessionScoped
public class User implements java.io.Serializable {
public String buttonId = "yiibai.com";
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";
}
}
以下是文件:MyActionListener.java
文件中的代碼 -
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.yiibai;
/**
*
* @author Maxsu
*/
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?");
}
}
以下是文件:index.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="com.yiibai.MyActionListener" />
</h:commandButton>
</h:form>
</h:body>
</html>
以下是文件: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>
運行項目
在Actionlistener 項目上點擊右鍵,選擇 【運行】,在Tomcat啓動完成後,打開瀏覽器訪問以下地址:
http://localhost:8084/Actionlistener/
如果程序沒有錯誤,應該會看到如下界面 -
點擊上面的按鈕後,應該會看到如下結果 -