我正在使用一个相当大的应用程序JSF 1.2,注意到自定义标记中的一些属性已经更改等等。
发布于 2018-03-26 10:58:26
将JSF1.2升级到2.0的痛苦程度取决于目前正在使用的视图技术以及您想要使用的视图技术。
不管视图技术的切换,至少应采取以下步骤:
/WEB-INF/lib
(如有的话)。/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想要守住使用它,基本上就不需要改变任何其他东西了。
如果已经使用了后缀url-pattern
为FacesServlet
,就像*.jsf
,很高兴知道FacesServlet
先扫描*.xhtml
文件,如果不存在,则扫描*.jsp
档案。这为您在不更改URL的情况下从JSP逐步转换为Facelets提供了空间。
但如果你用的是前缀url-pattern
,就像/faces/*
希望逐步从JSP升级到Facelets,然后必须将它更改为*.jsf
也可能是现有JSP页面中的所有链接。
如果你用Facelets 1.x作为视图技术,并希望使用提供的JSF2.0Facelets 2.0,则需要执行以下附加步骤:
/WEB-INF/lib
...FaceletViewHandler
从faces-config.xml
.FaceletViewHandler
需要更新实现以扩展。<context-param>
值web.xml
它们已经是Facelets 2.0中的缺省值,如javax.faces.DEFAULT_SUFFIX
有价值的*.xhtml
.如果你用JSP 2.x作为视图技术,您希望升级到Facelets 2.0立即,然后你需要做很多改变,然后网站才能上线。你基本上改变了这里的视图技术。
在每个母版页上,您需要更改以下基本JSP模板。
<%@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模板:
<!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的标记。其中任何一项都需要从以下几个方面加以改变:
<jsp:include page="include.jsp" />
到
<ui:include src="include.xhtml" />
基本JSP包括页面模板.
<%@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,包括页面模板:
<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>
@ManagedBean(name="managedBeanName")
@RequestScoped
public class SomeBean {}
https://stackoverflow.com/questions/-100003217
复制相似问题