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

2024-02-25

我有一个 JSP

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

然而它的错误是

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

我有图书馆facelets-lib.jar and jsf-facelets-1.1.10.jar,我认为是 Facelets,但它们不包含 JSP taglib 描述符。

什么文件是正确的?


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

您需要将文件扩展名重命名为.jsp to .xhtml并用 XML 命名空间声明替换所有 JSP taglib 声明并删除所有<jsp:xxx>标签和所有<% %>小脚本。

因此,例如以下基本 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 实现 http://javaserverfaces.java.net/。如果可以的话,我强烈建议您跳过 Facelets 1.x 并继续使用 Facelets 2.x。

也可以看看:

  • Facelets 开发者文档 http://facelets.java.net/nonav/docs/dev/docbook.html(对于 Facelets 1.x)
  • Java EE 6 教程 - Facelets http://docs.oracle.com/javaee/6/tutorial/doc/giepx.html(对于 Facelets 2.x)
  • 使用 Eclipse 和 Glassfish 的 JSF 2.0 教程 http://balusc.blogspot.com/2011/01/jsf-20-tutorial-with-eclipse-and.html(从零开始)
  • 从 JSF 1.2 迁移到 JSF 2.0 https://stackoverflow.com/questions/4441713/migrating-from-jsf-1-2-to-jsf-2-0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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