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

Posted

技术标签:

【中文标题】找不到 http://java.sun.com/jsf/facelets 的标记库描述符【英文标题】:Can not find the tag library descriptor for http://java.sun.com/jsf/facelets 【发布时间】:2011-09-13 09:47:36 【问题描述】:

我有一个 JSP

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

但是它会出错

绝对 uri:http://java.sun.com/jsf/facelets 无法在 web.xml 或随此应用程序部署的 jar 文件中解析

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

哪个文件是正确的?

【问题讨论】:

【参考方案1】:

Facelets 旨在完全替换 JSP。但是您试图将其声明为 JSP 标记库。这永远行不通。两者都是不同的视图技术。 Facelets 是一种基于 XML 的视图技术,旨在成为 JSP 的继承者。在 2009 年 12 月发布的 Java EE 6 中,它已经取代了 JSP 作为 JSF 的标准视图技术,此后 JSP 已被弃用。

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

所以,比如下面这个基本的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 年以来已作为 a JSF 2.x implementation 的一部分发布。如果可以的话,我强烈建议您跳过 Facelets 1.x 并继续使用 Facelets 2.x。

另见:

Facelets Developer Documentation(适用于 Facelets 1.x) Java EE 6 tutorial - Facelets(适用于 Facelets 2.x) JSF 2.0 tutorial with Eclipse and Glassfish(从零开始) Migrating from JSF 1.2 to JSF 2.0

【讨论】:

嗨,@BalusC,我正在考虑你的帖子。并试图了解这会造成的影响。每个人都知道scriptlet 是过时的。但是,如果我的两个页面都像您的示例一样。简单的&lt;% %&gt;scriplet 会影响性能吗?谢谢!【参考方案2】:

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

【讨论】:

以上是关于找不到 http://java.sun.com/jsf/facelets 的标记库描述符的主要内容,如果未能解决你的问题,请参考以下文章

java为啥每次都是找不到文件。找不到文件?

java 枚举 找不到符号

bat系统找不到指定文件怎么办?

java package找不到符号

SpringBoot报找不到 dao 问题

ubuntu20.04找不到start命令