Glassfish не отображает компоненты JSF - PullRequest
0 голосов
/ 20 марта 2011

В моем index.xhtml у меня есть компоненты Java Server Face, которые отображаются правильно и используют управляемый компонент. Но если я сделаю ссылку на любую другую страницу или даже на страницу с ТОЧНЫМ кодом, эти страницы не будут отображать эти компоненты, только текст.

Предположим, что index.xhtml выглядит так и отображается правильно:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <h:form>
            <h:inputText value="#{user.name}"/>
            <h:commandButton action="#{user.submit}" value="Submit" />
        </h:form>
    </h:body>
</html>

Если я добавлю ссылку на любую другую страницу (даже одну с тем же кодом), компоненты JSF для них не отобразятся. Это потому, что другие страницы, возможно, не «видят» управляемый компонент? Или что-то еще?

Спасибо за вашу помощь.

1 Ответ

3 голосов
/ 20 марта 2011

Похоже, что страницы, которые вы хотите вызвать, не обрабатываются сервлетом Faces.

В web.xml вашего приложения вы определяете URL-шаблон запросов к серверу, которые будут обрабатываться этим сервлетом.По умолчанию это часто /faces/*.Это означает, что ссылка, которую вы вызываете, должна содержать этот шаблон для обработки сервлетом Faces.

Если вы создаете свой проект с Netbeans, отображение обычно выглядит следующим образом:

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
</servlet-mapping>

Поэтому попробуйте использовать ссылки, содержащие этот шаблон URL, или вместо них использовать относительные ссылки.

Если вы используете h:link вместо a:href, шаблон URL автоматически добавляется:

<h:link value="My other page" outcome="otherpage" />

будет отображаться как:

<a href="/yourAppName/faces/otherpage.xhtml">My other page</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...