1

次の動作を示す JSF webapp があります:
http://localhost/myapp/index.xhtml の生のコンテンツを
http://localhost/myapp/web/返します 空白のページを
http://localhost/myapp/web/index.xhtml返します エラーを返します/index.xhtml Not Found in ExternalContext as a Resource

webapp のディレクトリ構造を以下に示します。

ここに画像の説明を入力

web.xml ファイルは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
      <display-name>myapp</display-name>
       <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
      </context-param>
       <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>/web/*</url-pattern>
      </servlet-mapping>

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

    <!--   <welcome-file-list>
        <welcome-file>index.xhtml</welcome-file>
      </welcome-file-list>
     -->  
    </web-app>

メソッドの最初の行にブレークポイントがありますjavax.faces.webapp.FacesServlet.service

public void service(ServletRequest req,
                    ServletResponse resp)
    throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) req;
    HttpServletResponse response = (HttpServletResponse) resp;

    requestStart(request.getRequestURI()); // V3 Probe hook

このブレークポイントはヒットしません。ここで何が間違っているのか、またはどこから調査を開始できるかについての指針を明らかにできる人はいますか。

4

1 に答える 1

2

JSF は、リソースを見つける前に、リクエスト URL から独自の URL パターンを削除します。/index.xhtmlエラーメッセージに従って、JSFが期待する場所にファイルを正確に配置する必要があります: in /index.xhtml. だから、/webフォルダの外。/webリクエスト URL でそのまま使用できることに注意してください。

FacesServlet別の方法は、単にon をマップすること*.xhtmlです。これにより、仮想 URL について心配する必要がなくなります。

以下も参照してください。

于 2013-01-12T11:21:24.923 に答える