Представляем JSF 1.2 в приложении JSP / Servlet Java EE - PullRequest
0 голосов
/ 15 декабря 2011

Моя среда - RAD 8, WAS 7.0.x с большим количеством JSP и сервлетов.Приложение также использует JAX-RPC и JAX-WS. Я хочу представить JSF и начать миграцию некоторых более простых JSP.

У меня есть огромная проблема, из-за которой я не могу сразу перейти на JSF 2.0, потому что моя цель - WAS7.х и наткнулся, что он не поддерживает JSF 2.0.Я делюсь WAS 7.x с другими бизнес-группами.Поэтому я должен сейчас использовать JSF 1.2.

В RAD 8 я попытался сделать следующее:

Из файла testJSF.jsp я использовал c: redirect для /faces/test1.jsp,Я также попробовал jsp: переслать в /faces/test1.jsp.В сервлет-маппинге есть записи шаблонов url для /face / * и * .jsp. На этот раз WAS 7 дал мне /test1.jsp не найден ...

Затем я попытался из файла testJSF.jspиспользовал c: redirect для /faces/test1.jsf Я также пробовал jsp: forward для /faces/test1.jsf.На этот раз я также изменил Servlet-mapping с записями url-pattern для /face / * и * .jsf. На этот раз WAS 7 пошел по бесконечному циклу с переполнением стека.

В этих средах, что должно бытьшаблон URL для отображения сервлетов и как я должен ссылаться на новые страницы JSF 1.2?

Ответы [ 2 ]

0 голосов
/ 15 декабря 2011

В сервлет-маппинге есть записи шаблона URL для / Faces / и .jsp

Не следует указывать *.jspотображение для FacesServlet.Этот шаблон зарезервирован для встроенного контейнера сервлета JspServlet.Таким образом, FacesServlet никогда не сможет получить правильный файл JSP для представления представления.


Отображение сервлета с записями шаблона url для /face / и .jsf На этот раз WAS 7 зашел в бесконечный цикл с переполнением стека.

Не следует указывать фактический файл просмотра с расширением .jsf, но с расширением .jsp.


Правильная настройкаследующее:

  • Отобразить FacesServlet только *.jsf.

    <servlet>
        <servlet-name>facesServlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>facesServlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
    

    Вы также можете использовать /faces/* вместо этого или добавить его, ноэто уродливее и не позволяет легко перейти на JSF 2.0.Поэтому оставьте это в стороне.

  • Файлы просмотра должны иметь расширение .jsp.

    viewid.jsp

    <%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
    <%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    <!DOCTYPE html>
    <f:view>
        <html lang="en">
            <head>
                <title>JSF 1.2 test page</title>
            </head>
            <body>
                <h:outputText value="If you see this, JSF works!" />
            </body>
        </html>
    </f:view>
    
  • Не используйте <c:redirect> или <jsp:forward>, это не имеет никакого смысла.Просто позвоните на страницу по URL-адресу напрямую:

    http://localhost:8080/contextname/viewid.jsf

    Обратите внимание на расширение .jsf в URL.Это вызывает FacesServlet.Затем он найдет файл viewid.jsp и покажет его.

См. Также:

0 голосов
/ 15 декабря 2011

У вас должно быть все в порядке с JSF 2.0, поскольку Websphere 7.0 реализует спецификацию Servlet 2.5 (насколько я вижу).

/ Faces / * или * .jsf отображение должно быть в порядке, может быть проблема конфигурации в другом месте ... вам нужно предоставить более подробную информацию.

Зачем вам нужен .jsp для проверки страницы JSF? Что произойдет, если вы откроете страницу прямо из браузера?

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