首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从JSF1.2迁移到JSF2.0

从JSF1.2迁移到JSF2.0
EN

Stack Overflow用户
提问于 2018-03-26 02:08:35
回答 2查看 0关注 0票数 0

我正在使用一个相当大的应用程序JSF 1.2,注意到自定义标记中的一些属性已经更改等等。

EN

Stack Overflow用户

发布于 2018-03-26 10:58:26

将JSF1.2升级到2.0的痛苦程度取决于目前正在使用的视图技术以及您想要使用的视图技术。

  • JSP2.x到JSP2.x=几乎毫不费力。
  • Facelets 1.x到Facelets 2.0=很少的努力。
  • JSP2.xtoFacples2.0=很大的努力。如果您也有自定义组件,则加倍。

基本变化

不管视图技术的切换,至少应采取以下步骤:

  • /WEB-INF/lib(如有的话)。
  • 放下JSF2.0 JAR/WEB-INF/lib
  • 更新根声明faces-config.xml以符合JSF2.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">
  • 确保web.xml已遵守至少Servlet 2.5。JSF2.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" id="YourWebappID" version="2.5">

JSP 2.x到JSP 2.x

如果你用JSP 2.x想要守住使用它,基本上就不需要改变任何其他东西了。

逐步升级

如果已经使用了后缀url-patternFacesServlet,就像*.jsf,很高兴知道FacesServlet先扫描*.xhtml文件,如果不存在,则扫描*.jsp档案。这为您在不更改URL的情况下从JSP逐步转换为Facelets提供了空间。

但如果你用的是前缀url-pattern,就像/faces/*希望逐步从JSP升级到Facelets,然后必须将它更改为*.jsf也可能是现有JSP页面中的所有链接。

Fac激光束1.x到Fac激光束2.0

如果你用Facelets 1.x作为视图技术,并希望使用提供的JSF2.0Facelets 2.0,则需要执行以下附加步骤:

  • /WEB-INF/lib...
  • 移除Facelets 1.xFaceletViewHandlerfaces-config.xml.
  • 任何习俗FaceletViewHandler需要更新实现以扩展。
  • 没有必要,但只是为了清理,删除与Facelets 1.x相关的任何内容<context-param>web.xml它们已经是Facelets 2.0中的缺省值,如javax.faces.DEFAULT_SUFFIX有价值的*.xhtml.
  • 更新现有Faclettaglib XML的根声明,以符合Facelets 2.0的要求。<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">

JSP2.x到Facelets 2.0

如果你用JSP 2.x作为视图技术,您希望升级到Facelets 2.0立即,然后你需要做很多改变,然后网站才能上线。你基本上改变了这里的视图技术。

母版页更改

在每个母版页上,您需要更改以下基本JSP模板。

代码语言:txt
复制
<%@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>

到以下基本Facelets模板:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets">
    <h:head>
        <title>XHTML page</title>
    </h:head>
    <h:body>
        <h:outputText value="JSF components here." />
    </h:body>  
</html>

包括页面更改

如果现有的JSP页面设计良好,则不应使用脚本代码,还应该只有<jsp:include>作为唯一的特定于JSP的标记。其中任何一项都需要从以下几个方面加以改变:

代码语言:txt
复制
<jsp:include page="include.jsp" />

代码语言:txt
复制
<ui:include src="include.xhtml" />

基本JSP包括页面模板.

代码语言:txt
复制
<%@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"%>
<f:subview id="include">
    <h:outputText value="JSF components here." />
</f:subview>

应该将更改为以下基本Facelets,包括页面模板:

代码语言:txt
复制
<ui:composition
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets">
    <h:outputText value="JSF components here." />
</ui:composition>

代码语言:txt
复制
@ManagedBean(name="managedBeanName")
@RequestScoped
public class SomeBean {}
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档