Почему теги jsp: не анализируются? - PullRequest
1 голос
/ 28 июля 2010

У меня есть login.xhtml JSF-страница:

<?xml version="1.0"?>
<jsp:root version="2.0"
  xmlns:jsp="http://java.sun.com/JSP/Page"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:h="http://java.sun.com/jsf/html">
<jsp:directive.page contentType="text/html"/>
<f:view>
  <h:inputText value="#{userBean.id}"/>
</f:view>
</jsp:root>

Выходной HTML-код содержит правильно отображенный тег <input>, но <jsp:*> остаются без изменений.Кажется, JSF просто не поняла их.Почему?

Ответы [ 3 ]

3 голосов
/ 28 июля 2010

Вы используете JSF 2.0, и файл имеет расширение *.xhtml. На самом деле вы используете Facelets в качестве технологии просмотра, а не JSP. Facelets является преемником JSP. Вы не можете смешивать Facelets с тегами JSP. Избавьтесь от всех <jsp:> тегов, они бесполезны и никогда не будут работать на странице Facelets. Теги JSP анализируются только когда вы называете файл *.jsp, который будет подхвачен встроенным в сервлетконтейнер JspServlet. Но так как вы используете JSF 2.0 с Facelets, у вас уже есть FacesServlet для этой работы. Забудь про JSP:)

Вот как должен выглядеть ваш XHTML-файл:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html">
    <h:head>
        <title>Title</title>
    </h:head>
    <h:body>
        <h:inputText value="#{userBean.id}"/>
    </h:body>
</html>

Обратите внимание, что вы хотите поместить этот входной компонент в <h:form>, но я уверен, что это будет просто тестовый пример.

Также обратите внимание, что <!DOCTYPE html> является совершенно законным здесь. Вам не нужен XHTML-тип документа. Facelets позаботятся о настройке правильного text/html типа контента, UTF-8 кодировки символов и т. Д.

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

0 голосов
/ 28 июля 2010

Вам необходимо активировать JSF, обычным способом является указание браузеру на login.jsf или face / login.xhtml. Если нет, то файл передается в браузер без обработки

0 голосов
/ 28 июля 2010

Используемые вами теги JSP не генерируют HTML.

Директива contentType влияет на заголовок, а не на HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...