JSF работает только с окончанием .xhtml - PullRequest
4 голосов
/ 22 января 2010

Я начинаю с программирования сайта JSF. На данный момент все файлы имеют окончание .xhtml. Когда я иду на http://localhost:8080/myProject/start.jsf все в порядке. Но когда я переименовал файл из start.xhtml в start.jsf, я стал ошибкой NoClassDefFound.

В чем моя ошибка?

  <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
  <context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
  </context-param>

Ответы [ 3 ]

6 голосов
/ 22 января 2010

Вы должны изменить параметр javax.faces.DEFAULT_SUFFIX (в web.xml)

<context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.jsf</param-value>
</context-param>

Однако это не рекомендуется - либо используйте .xhtml, либо .jsp для своих файлов. Обратите внимание, что вы можете использовать .jsp с лицевыми панелями без проблем (если, например, автозаполнение вашей IDE не работает для .xhtml).

Также обратите внимание, что:

  • Отображение сервлета лица определяет, как ссылки на jsf-страницы обращаются с точки зрения http
  • параметр DEFAULT_SUFFIX указывает расширение файлов.
1 голос
/ 22 января 2010

Почему вы хотите переименовать файл start.jsf? Правильное расширение файлов JSF: .xhtml (но вы можете изменить это расширение по умолчанию, как указано Bozho).

На самом деле, если быть точным, это расширение определяется Facelets (или JSF 2.0, так как он изначально интегрирует Facelets), которое отличается, если вы используете «базовые» файлы JSP.

0 голосов
/ 22 января 2010

Лучше остаться с .xhtml, потому что это правильный способ сделать это, но вы можете настроить его с помощью контекстного параметра javax.faces.DEFAULT_SUFFIX в web.xml.

...