JSF2.0 - * .xhtml-страницы дают 404-NotFound, но * .jsp работают хорошо? - PullRequest
0 голосов
/ 16 января 2012

У меня установлен Weblogic 10.3.5. Я развернул войну JSF 2.0 на сервере. В моей папке WebContent находятся файлы * .xhtml и * .jsp, которые содержат JSF2.0 xhtml и чистый код JSP соответственно. Когда я перехожу на http://localhost:7001/MyApp/NewFile123.xhtml, я получаю страницу ошибки 404 Not found. (Ничего информативного на консоли Eclipse). Но http://localhost:7001/MyApp/NewFile.jsp работает хорошо и делает то, что должен.

Я не смешиваю JSF и JSP, а просто хотел посмотреть, сработает ли JSP. У меня есть соответствующее отображение сервлетов для файлов XHTML.

У меня также есть эти слова на моем classpath:

  • glassfish.el_1.0.0.0_2-2.jar

  • glassfish.jsf_1.0.0.0_2-1-5.jar

  • glassfish.jstl_1.2.0.2.jar

  • javax.servlet_1.0.0.0_2-5.jar

Еще одна интересная вещь, когда я пытаюсь редактировать файлы * .xhtml, автозаполнение не работает. (то есть он не будет автозаполняться <h:outp. Раньше, когда я использовал Weblogic 12.1 с JSF2.0 из коробки.

Редактировать: Вот соответствующая часть web.xml

<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>*.xhtml</url-pattern>
</servlet-mapping>

Так почему я получаю 404, когда пытаюсь перейти на страницу JSF? Есть предложения?

1 Ответ

1 голос
/ 16 января 2012

У меня также есть их на моем classpath:

  • glassfish.el_1.0.0.0_2-2.jar
  • glassfish.jsf_1.0.0.0_2-1-5.jar
  • glassfish.jstl_1.2.0.2.jar
  • javax.servlet_1.0.0.0_2-5.jar

Удалить все этиспецифичные для контейнера библиотеки из вашего /WEB-INF/lib.Они там вообще не принадлежат, контейнер уже поставляется с ними.Ваш /WEB-INF/lib должен содержать только библиотеки веб-приложений, которые не поставляются вместе с контейнером.

Скорее всего, ваша проблема вызвана тем, что Weblogic 1.0.3.5 является сервлетом 2.5контейнер, который уже поставляется с JSF 2.0, но вы поставляете библиотеку JSF 2.1, которая требует Servlet 3.0.Я не использую Weblogic, но я читал, что 1.0.3.x требует определенных шагов для работы JSF 2.0, см. Также этот блог .Вот отрывок актуальности:

  • Загрузите и установите один из последних Установщиков Oracle WebLogic Server 11g Rel 1 (10.3.3) из OTN.(Попробуйте ZIP-установщик. Потрясающе легкий!)
  • Создайте новый пример домена (называйте его как хотите) и запустите сервер администратора
  • Откройте консоль администрирования (http://localhost:7001/console/)
  • развернуть библиотеку JSF 2.0 (Развертывания - Установить - wlserver_10.3 \ common \ deployable-library \ jsf-2.0.war
  • Найдите ваш любимый образец JSF 2.0 (я возьму угадайку из мохаррыРаспространение -2.0.2)
  • Добавить файл weblogic.xml в папку WEB-INF / со следующим содержимым:

    <?xml version="1.0" encoding="UTF-8"?>
    <weblogic-web-app>
      <library-ref>
        <library-name>jsf</library-name>
        <specification-version>2.0</specification-version>
        <implementation-version>1.0.0.0_2-0-2</implementation-version>
        <exact-match>true</exact-match>
      </library-ref>
    </weblogic-web-app>
    

Обновление согласно комментариям:

Теперь я подозреваю, что это может быть связано с настройками проекта. Я создал Dynamic Web Project и выбрал JSF 1.2.На следующем шаге, где меня попросили указать спецификацию и реализацию JSF, я указал ему на те jasf-файлы glassfish. По умолчанию было 1.2. Может, мне не следовало этого делать?

Это могло бысгенерировал JSF 1.2-совместимый faces-config.xml, которыйзаставьте JSF 2.0 работать в режиме JSF 1.2.Вам необходимо повторно объявить корневую декларацию <faces-config> для соответствия JSF 2.0.

<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
    version="2.0">
...