首頁 >Java >java教程 >從 JSF 1.2 遷移到 JSF 2.0 面臨哪些挑戰?

從 JSF 1.2 遷移到 JSF 2.0 面臨哪些挑戰?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-28 03:08:10649瀏覽

What are the challenges of migrating from JSF 1.2 to JSF 2.0, and how do these challenges vary depending on the view technology used?

從 JSF 1.2 升級到 JSF 2.0 的痛苦

從 JSF 1.2 升級到 2.0 的痛苦取決於您目前使用的視圖技術和未來。這取決於您計劃使用的查看技術。

  • JSP 2.x 到 JSP 2.x = 幾乎不費力。
  • Facelets 1.x 到 Facelets 2.0 = 更少的工作量。
  • JSP 2.x 到 Facelets 2.0 = 大量工作。如果您有自訂元件,則需要加倍。

基本變更

無論切換視圖技術如何,您至少應該執行以下步驟:

  • 從/WEB-INF/lib(如果存在)中刪除JSF 1.2 JAR。
  • 將 JSF 2.0 JAR 拖放到 /WEB-INF/lib 中(如果 JSF 1.2 由 servlet 容器提供,請設定類別以在 servlet 容器的庫之前先載入 Web 應用程式庫)。策略(另請參閱應用程式伺服器 JSF2 類別載入問題)。
  • 更新 faces-config.xml 中的根宣告以符合 JSF 2.0 規格。
  <faces-config
      xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
      version="2.0">

注意:如果您使用的是JSF 2.2 或更高版本,請在上面的XML 程式碼段中使用http://xmlns.jcp 而不是http://java. sun.com。 .org 命名空間域。

  • 確保 web.xml 中的路由宣告至少符合 Servlet 2.5。 JSF 2.0 在 2.4 以下將無法運作(儘管駭客是可能的)。
  <web-app 
      xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     >

注意:如果您使用的是Servlet 3.0 或更高版本,請在上面的XML 程式碼段中使用http://xmlns.jcp 而不是http://java. sun.com。 .org 命名空間域。

JSP 2.x 到 JSP 2.x

如果您使用的是 JSP 2。基本上您不需要更改任何其他內容。 逐步升級

如果您已經在FacesServlet 中使用後綴URL 模式(例如

.jsf)並且想要

只使用

,FacesServlet 首先會掃描只使用,FacesServlet 首先會掃描只使用,FacesServlet 首先會掃描

只使用,FacesServlet 首先會掃描只使用,FacesServlet 先掃描.xhtml 文件,如果不存在,則為*.jsp記住掃描文件是個好主意。這允許從 JSP 逐步轉換到 Facelets,而無需更改 URL。

但是,如果您使用前綴URL 模式(例如/faces/)並希望分階段從JSP 升級到Facelets,請將其更改為.jsf 並可能替換現有的所有連結JSP頁面也必須改變。

請注意,新的 JSF 2.0 提供的隱式導航不會掃描檔案是否存在,而是導航到結果.xhtml。因此,如果您從 .jsp 移動到 .jsp,您仍然需要以 JSF 1.x 方式將其包含在視圖 ID 中。

Facelets 1.x 到 Facelets 2.0

我使用 Facelets 1.x 作為我的視圖技術,Facelets 2.x 作為我的視圖技術,

Facelets 2.0
    作為我的視圖技術,
  • Facelets 2.0
  • 從 /WEB-INF/lib 中刪除 Facelets 1.x JAR。
  • Facelets 1.x 從 faces-config.xml 中刪除 FaceletViewHandler。
  • 如果您有自訂 FaceletViewHandler 實現,則必須更新它以擴展 ViewHandlerWrapper。
  • 儘管沒有必要,但出於清理目的,請從 web.xml 中刪除 Facelets 1.x 相關的 值(例如, javax.faces.DEFAULT_SUFFIX 值為 *.xhtml)。這已經是 Facelets 2.0 中的預設值。
  <faces-config
      xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
      version="2.0">
將現有 Facelet 標籤庫 XML 的根聲明更新為相容 Facelet 2.0。

注意:如果您使用的是JSF 2.2 或更高版本,請在上面的XML 程式碼段中使用http://xmlns.jcp 而不是http://java. sun.com。 .org 命名空間域。

這些基本上就夠了。

JSP 2.x 到Facelets 2.0 我們正在使用JSP 2.x

作為我們的視圖技術,並將很快升級到

Facelets 2.0

如果如果您願意,您必須在發佈網站之前進行大量更改。我們基本上改變了這裡的視圖技術。

母版頁修改
  <web-app 
      xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     >

必須在所有母版頁中修改以下基本 JSP 範本。

  <facelet-taglib 
      xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
      version="2.0">

改為以下基本 Facelets 範本。

注意:如果您使用的是JSF 2.2 或更高版本,請在上面的XHTML 程式碼段中使用http://xmlns.jcp.org 名稱而不是http://java. sun.com。空間域。

包含頁面變更

如果您現有的JSP 頁面設計良好,則不會有scriptlet 行程式碼,唯一的JSP 特定標記將是

jsp 應該只有是:包括>它們應該從:
  <faces-config
      xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
      version="2.0">

更改如下。
  <web-app 
      xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     >

基本 JSP 包含頁面範本...
  <facelet-taglib 
      xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
      version="2.0">

...必須變更為以下基本 Facelets 包含頁面範本。
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html>
<f:view>
    <html lang="en">
        <head>
            <title>JSP page</title>
        </head>
        <body>
            <h:outputText value="JSF components here." />
        </body>
    </html>
</f:view>

以上是從 JSF 1.2 遷移到 JSF 2.0 面臨哪些挑戰?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn