无法找到http://java.sun.com/jsf/facelets的标记库描述符
我有一个JSP与
<%@taglib uri="http://java.sun.com/jsf/facelets" prefix="ui" %>
但它与错误
绝对URI:http://java.sun.com/jsf/facelets无法在web.xml或使用此应用程序部署的jar文件中解析
我有库facelets-lib.jar
和jsf-facelets-1.1.10.jar
,我认为它是Facelets,但它们不包含JSP taglib描述符。
什么文件是正确的?
Facelets的意图是完全取代 JSP。 但是你试图将它声明为JSP标签库。 这是永远不会工作。 两者都是独特的视图技术。 Facelets是一种基于XML的视图技术,旨在成为JSP的后继者。 在2009年12月发布的Java EE 6中,它已经将JSP作为JSF和JSP的标准视图技术取代,此后不再推荐使用JSP。
您需要将文件扩展名从.jsp
重命名为.xhtml
并用XML名称空间声明替换所有JSP taglib声明,并移除所有<jsp:xxx>
标记和所有<% %>
scriptlet。
所以,例如下面的基本JSP模板page.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>
必须重写为page.xhtml
<!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">
<head>
<title>Facelet page</title>
</head>
<body>
<h:outputText value="JSF components here." />
</body>
</html>
最后,所提到的JAR文件是Facelets 1.x JAR,而Facelets 2.x自2009年以来已作为JSF 2.x实现的一部分出现。 如果可以的话,我强烈推荐跳过Facelets 1.x并继续使用Facelets 2.x.
也可以看看:
如果您使用的是JSF 2,则需要使用jsf-api.jar
和jsf-impl.jar
。
如果您使用的是JSF 1,请看这里
上一篇: Can not find the tag library descriptor for http://java.sun.com/jsf/facelets
下一篇: Can I serve JSPs from inside a JAR in lib, or is there a workaround?