2012-03-09 5 views
1

Мне не удалось получить файл index.xhtml для правильной загрузки, и я проверил все учебники для этого. Может ли кто-нибудь указать мне в правильном направлении? Я только просматривал учебники на сайте richfaces.richfaces + index.xhtml с ошибками

Ниже мой web.xml файл:

<?xml version="1.0"?> 
<web-app version="2.5" 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-app_2_5.xsd"> 
<display-name>Greeter</display-name> 

<context-param> 
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
    <param-value>server</param-value> 
</context-param> 

<context-param> 
    <param-name>org.richfaces.SKIN</param-name> 
    <param-value>blueSky</param-value> 
</context-param> 

<context-param> 
    <param-name>org.richfaces.CONTROL_SKINNING</param-name> 
    <param-value>enable</param-value> 
</context-param> 

<filter> 
    <display-name>RichFaces Filter</display-name> 
    <filter-name>richfaces</filter-name> 
    <filter-class>org.ajax4jsf.Filter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>richfaces</filter-name> 
    <servlet-name>Faces Servlet</servlet-name> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>INCLUDE</dispatcher> 
</filter-mapping> 

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

<!-- Faces Servlet --> 
<servlet> 
    <servlet-name>Loader</servlet-name> 
    <servlet-class>com.mounza.common.Loader</servlet-class> 
    <load-on-startup>2</load-on-startup> 
</servlet> 
<servlet> 
    <servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

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

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

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

<welcome-file-list> 
    <welcome-file>index.jsf</welcome-file> 
</welcome-file-list> 

<session-config> 
    <session-timeout> 
     30 
    </session-timeout> 
</session-config> 

ответ

4

Вы говорите о <welcome-file>, верно? Он должен указывает на физически существующий файл, так как он был внутренне использован сервлетконтейнером для отображения ресурса по умолчанию всякий раз, когда запрашивается папка. Сервлетконтейнер сначала проверяет, существует ли файл перед выполнением переадресации. Если файл не существует, вы получите только 404.

Сочетание этого с JSF, который выполняется на виртуальном URL, требует только специального трюка. Вам в основном нужно обмануть servletcontainer физически существующим, но пустымindex.jsf файл находится в папке рядом с вашим реальным файлом index.xhtml. Таким образом, servletcontainer не будет показывать 404, но выполнит переадресацию к файлу, который автоматически активирует FacesServlet.

Но если вам случится уже используют JSF 2.x (который, кажется, не быть, но в любом случае, просто для полноты картины), то вы можете просто изменить шаблон URL в FacesServlet от *.jsf/faces/*) до *.xhtml. Таким образом, вам больше не нужно возиться с виртуальными URL-адресами. Это невозможно в JSF 1.x, потому что FacesServlet будет называть себя бесконечным циклом.

Смежные вопросы