где я могу разместить файлы XHTML, чтобы сделать их видимыми в веб-контейнере GlassFish? - PullRequest
1 голос
/ 02 августа 2010

Это структура моего проекта (именно эти пять файлов):

/p1
  pom.xml
  /src
    /main
      /java
      /webapp
        a.html
        b.xhtml
      /WEB-INF
        faces-config.xml
        web.xml

Я развертываю эту WAR-версию на GlassFish и могу успешно получить доступ к этому URL-адресу: http://localhost:8080/p1/a.html. Когда я пытаюсь открыть http://localhost:8080/p1/b.xhtml, я получаю сообщение

The requested resource (/p1/b.xhtml) is not available.

Что я делаю не так?

пс. Мои зависимости от pom.xml:

...
<dependency>
  <groupId>com.sun.faces</groupId>
  <artifactId>jsf-api</artifactId>
  <version>${jsf.version}</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>com.sun.faces</groupId>
  <artifactId>jsf-impl</artifactId>
  <version>${jsf.version}</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>com.sun.facelets</groupId>
  <artifactId>jsf-facelets</artifactId>
  <version>${facelets.version}</version>
</dependency>
...

Это мой 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>

Мой faces-config.xml:

<application>
  <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
</application>

1 Ответ

2 голосов
/ 02 августа 2010

Для Maven все выглядит хорошо, за исключением того, что лицевые стороны также должны быть provided. На самом деле я использую следующую зависимость:

<!-- This dependency will bring in everything we need for JAVA EE6 -->
<dependency>
  <groupId>javax</groupId>
  <artifactId>javaee-api</artifactId>
  <version>6.0</version>
  <scope>provided</scope>
</dependency>

Для части JSF ничего в журналах сервера? На всякий случай, не могли бы вы добавить следующее к вашему web.xml, чтобы увидеть, получите ли вы более полезный вывод:

<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
</context-param>

В качестве примечания вам не нужен ваш faces-config.xml, поскольку Facelets является обработчиком представления по умолчанию в JSF 2.0. Но это не должно быть проблемой.

PS: Лично я предпочитаю отображать Faces Servlet на что-то вроде *.jsf (чтобы четко де-коррелировать любой сопоставленный URL с фактической страницы .xhtml лицевой стороны, которая будет обрабатываться сервлетом Faces).

Смотри также

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