JSF - Ajax



AJAX 代表非同步 JavaScript 和 XML。

Ajax 是一種使用 JavaScript 的 HTTPXMLObject 向伺服器傳送資料並非同步接收伺服器資料的技術。因此,使用 Ajax 技術,javascript 程式碼與伺服器交換資料,更新網頁的部分內容而無需重新載入整個頁面。

JSF 為進行 ajax 呼叫提供了極好的支援。它提供 f:ajax 標籤來處理 ajax 呼叫。

JSF 標籤

<f:ajax execute = "input-component-name" render = "output-component-name" />

標籤屬性

序號 屬性 & 描述
1

disabled

如果為真,則 Ajax 行為將應用於任何父元件或子元件。如果為假,則 Ajax 行為將被停用。

2

事件

將觸發 Ajax 請求的事件,例如“click”、“change”、“blur”、“keypress”等。

3

執行

應包含在 Ajax 請求中的元件 ID 的空格分隔列表。

4

立即

如果為“true”,則從此行為生成的事件在“應用請求值”階段廣播。否則,事件將在“呼叫應用程式”階段廣播。

5

監聽器

在 Ajax 請求期間呼叫的支援 Bean 中方法的 EL 表示式。

6

Onerror

如果在 Ajax 請求期間發生錯誤,將呼叫的 JavaScript 回撥函式的名稱。

7

Onevent

將呼叫以處理 UI 事件的 JavaScript 回撥函式的名稱。

8

渲染

Ajax 請求後將更新的元件 ID 的空格分隔列表。

示例應用程式

讓我們建立一個測試 JSF 應用程式來測試 JSF 中的自定義元件。

步驟 描述
1 在包 com.tutorialspoint.test 下建立一個名為 helloworld 的專案,如 JSF - 第一個應用程式 章節中所述。
2 修改 UserData.java 檔案,如下所述。
3 修改 home.xhtml,如下所述。保持其餘檔案不變。
4 編譯並執行應用程式以確保業務邏輯按要求工作。
5 最後,將應用程式構建成 war 檔案並將其部署到 Apache Tomcat Web 伺服器中。
6 使用適當的 URL 啟動您的 Web 應用程式,如下面的最後一步中所述。

UserData.java

package com.tutorialspoint.test;

import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean(name = "userData", eager = true)
@SessionScoped
public class UserData implements Serializable {
   private static final long serialVersionUID = 1L;
   private String name;
   
   public String getName() {
      return name;
   }
   
   public void setName(String name) {
      this.name = name;
   }

   public String getWelcomeMessage() {
      return "Hello " + name;
   }
}

home.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:tp = "http://java.sun.com/jsf/composite/tutorialspoint">
   
   <h:head>
      <title>JSF tutorial</title>
   </h:head>
   
   <h:body>
      <h2>Ajax Example</h2>
      
      <h:form>
         <h:inputText id = "inputName" value = "#{userData.name}"></h:inputText>
         <h:commandButton value = "Show Message">
            <f:ajax execute = "inputName" render = "outputMessage" />
         </h:commandButton>
         <h2><h:outputText id = "outputMessage"
            value = "#{userData.welcomeMessage != null ?
            userData.welcomeMessage : ''}"
         /></h2>
      </h:form>
   </h:body>
</html>

準備好所有更改後,讓我們像在 JSF - 第一個應用程式章節中那樣編譯並執行應用程式。如果您的應用程式一切正常,這將產生以下結果。

JSF ajax result

輸入名稱並按下“顯示訊息”按鈕。您將看到以下結果,無需頁面重新整理/表單提交。

JSF ajax result1
廣告