JSF не отображается - PullRequest
       15

JSF не отображается

1 голос
/ 01 февраля 2011

У меня есть крошечное веб-приложение с index.jsp , которое пересылает (в основном содержит только):

<jsp:forward page="/pages/inputname.jsf" />

web.xml содержит (в дополнение ко всему, что вы ожидаете; см. Больше ниже):

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

inputname.jsp не рендерится (вот URI):

http://localhost:8080/simpleWeb/index.jsp

Страница отображается в браузере (метка, поле ввода ввода, кнопка):

#{msg.prompt} #{personBean.personName} #{msg.button_text}

Я предполагаю, что это потому, что он не проходит через сервлет Faces. Тем не менее, я не уверен, как заставить его пройти. (Обратите внимание, что я где-то в другом месте, с RichFaces и MyFaces, у меня аналогичные проблемы и с файлами .xhtml , но я бы хотел сначала решить этот более простой случай.)

В этом руководстве я использую эти библиотеки (через Maven) в WEB-INF / lib /:

avalon-framework-4.1.3.jar
commons-beanutils-1.7.0.jar
commons-collections-3.2.jar
commons-digester-1.8.jar
commons-logging-1.1.jar
jsf-api-1.2_02.jar
jsf-impl-1.2-b19.jar
jstl-1.1.2.jar
log4j-1.2.12.jar
logkit-1.0.1.jar
servlet-api-2.3.jar
standard-1.1.2.jar

Любая помощь будет принята с благодарностью.

web.xml (да, у него есть заголовок веб-приложения DOCTYPE):

<web-app>
    <display-name>Archetype Created Web Application</display-name>

    <context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>server</param-value>
    </context-param>
    <context-param>
        <param-name>javax.faces.CONFIG_FILES</param-name>
        <param-value>/WEB-INF/faces-config.xml</param-value>
    </context-param>

    <listener>
        <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
</web-app>

Ответы [ 2 ]

2 голосов
/ 01 февраля 2011

Два решения:

  1. Браузер должен вызывать index.jsp как index.jsf.
  2. index.jsp должен вызывать перенаправление, а не пересылку.JSTL <c:redirect> может быть полезным.

Несмотря на это, такой index.jsp довольно бессмысленен.Просто добавьте /pages/inputname.jsf как <welcome-file> в web.xml и предоставьте файл blank /pages/inputname.jsf рядом с real /pages/inputname.jsp, чтобы обмануть сервер, что файл существует (в противном случаеэто пойдет 404).

Что касается web.xml, то DOCTYPE там не принадлежит.Это древний остаток подхода Servlet 2.3 и ранее (ему уже почти десять лет).На Сервлете 2.4 и новее есть XSD.Более того, поскольку вы используете JSF 1.2, web.xml должен быть объявлен как , по крайней мере, Servlet 2.4, желательно выше, наивысший, который может поддерживать ваш контейнер, чтобы вы могли использовать новейшие доступные возможности API,Tomcat 5.5 - это Servlet 2.4, Tomcat 6.0 - это Servlet 2.5, а Tomcat 7.0 - это Servlet 3.0.

См. Также:

0 голосов
/ 01 февраля 2011

У меня что-то похожее, это то, что используется для перенаправления:

<body>
    <%
        response.sendRedirect("index.jsf");
    %>
</body>

попытка вставить "/index.jsp" в браузер приводит вас к "/index.jsf".

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