关于jsp:找不到http://java.sun.com/jsf/facelets的标记库描述符

Can not find the tag library descriptor for http://java.sun.com/jsf/facelets

我有一个JSP

1
<%@taglib uri="http://java.sun.com/jsf/facelets" prefix="ui" %>

但是它错误

The absolute uri: http://java.sun.com/jsf/facelets cannot be resolved in either web.xml or the jar files deployed with this application

我有库facelets-lib.jarjsf-facelets-1.1.10.jar,我想它们是Facelets,但是它们不包含JSP taglib描述符。

哪个文件正确?


Facelets旨在完全替代JSP。但是,您正在尝试将其声明为JSP taglib。这永远不会起作用。两者都是独特的视图技术。 Facelets是一种基于XML的视图技术,旨在替代JSP。在2009年12月发布的Java EE 6中,它已经取代了JSP,成为JSF的标准视图技术,此后不推荐使用JSP。

您需要将文件扩展名从.jsp重命名为.xhtml,并将所有JSP taglib声明替换为XML名称空间声明,并删除所有标记和所有<% %>脚本。

因此,例如,以下基本JSP模板page.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@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>
            JSP page
        </head>
        <body>
            <h:outputText value="JSF components here." />
        </body>
    </html>
</f:view>

必须重写为page.xhtml

1
2
3
4
5
6
7
8
9
10
11
12
13
<!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>
        Facelet page
    </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并继续使用Facelets2.x。

也可以看看:

  • Facelets开发人员文档(适用于Facelets 1.x)
  • Java EE 6教程-Facelets(适用于Facelets 2.x)
  • 带有Eclipse和Glassfish的JSF 2.0教程(从零开始)
  • 从JSF 1.2迁移到JSF 2.0


如果使用的是JSF 2,则需要jsf-api.jarjsf-impl.jar
如果您使用的是JSF 1,请在此处查看