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

Lor*_*cci 13 jsf jsp facelets taglib

我有一个JSP

<%@taglib uri="http://java.sun.com/jsf/facelets" prefix="ui" %>
Run Code Online (Sandbox Code Playgroud)

但它有错误

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

我有图书馆facelets-lib.jarjsf-facelets-1.1.10.jar,我想是的Facelets,但它们不包含JSP标签库描述符.

什么文件是正确的?

Bal*_*usC 20

Facelets旨在完全取代 JSP.但是你试图将它声明为JSP taglib.这永远不会奏效.两者都是不同的视图技术.Facelets是一种基于XML的视图技术,旨在成为JSP的后继者.在2009年12月发布的Java EE 6中,它已经取代JSP作为JSF的标准视图技术,而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>
Run Code Online (Sandbox Code Playgroud)

必须改写为 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>
Run Code Online (Sandbox Code Playgroud)

最后,提到的JAR文件是Facelets 1.x JAR,而Facelets 2.x自2009年以来已经作为JSF 2.x实现的一部分而被淘汰.如果可以,我强烈建议您跳过Facelets 1.x并继续使用Facelets 2.x.

也可以看看: