Не удается найти дескриптор библиотеки тегов для http://java.sun.com/jsf/facelets - PullRequest
13 голосов
/ 12 июня 2011

У меня есть 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, но они не содержат дескрипторов taglib JSP.

Какой файлправильно?

Ответы [ 2 ]

20 голосов
/ 12 июня 2011

Facelets намеревается заменить JSP в целом. Но все же вы пытаетесь объявить его как JSP taglib. Это никогда не сработает. Оба являются отличными технологиями просмотра. Facelets - это технология представления на основе XML, разработанная, чтобы стать преемником JSP. В Java EE 6, выпущенном в декабре 2009 года, он уже заменил JSP как стандартную технологию представления для JSF, и с тех пор JSP устарела.

Вам необходимо переименовать расширение файла с .jsp на .xhtml и заменить все объявления тегов JSP на объявления пространств имен XML и удалить все теги <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-файлы представляют собой JAR-файлы Facelets 1.x, в то время как Facelets 2.x уже существует с 2009 года как часть реализации JSF 2.x . Если вы можете, я настоятельно рекомендую просто пропустить Facelets 1.x и перейти к Facelets 2.x.

Смотри также:

3 голосов
/ 12 июня 2011

Если вы используете JSF 2, вам понадобятся jsf-api.jar и jsf-impl.jar.
Если вы используете JSF 1, посмотрите на здесь

...