10

JSF 2 Web アプリケーションを開発しています。威信的な目的のために、すべての URL が.jsf拡張子で終わることを望みます。で終わります.xhtml.jsfWeb ブラウザーのアドレス バーで直接変更すると、HTTP 500 エラーが表示されます。

どうすれば設定でき.jsfますか?

4

3 に答える 3

17

JSFページのURLパターンは、ので指定さ<servlet-mapping>FacesServletますweb.xml。あなたがそれ.xhtmlがうまくいくと言ったように、あなたは明らかにそれを次のように構成しました:

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

<url-pattern>必要な仮想URL拡張子を取得するには、それに応じて変更する必要があります。

<servlet>
    <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>

本当に、具体的な機能要件を達成するために変更する必要があるのはそれだけです。

ただし、これによりセキュリティの問題が発生します。.jsfエンドユーザーは、URLの拡張子をからに戻すときに、生のFaceletsファイルのソースコードを表示できるようになりました.xhtml。次のセキュリティ制約を追加することで、これを防ぐことができますweb.xml

<security-constraint>
    <display-name>Restrict access to Facelets source code.</display-name>
    <web-resource-collection>
        <web-resource-name>Facelets</web-resource-name>
        <url-pattern>*.xhtml</url-pattern>
    </web-resource-collection>
    <auth-constraint/>
</security-constraint>
于 2012-09-27T12:14:17.347 に答える
2
 <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>
于 2012-08-25T09:28:25.110 に答える
-1
you can add this code in your web.xml, and you can run your pages ends with xhtml, jsf or faces
 <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>*.jsf</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
  </servlet-mapping>
于 2016-03-13T07:14:41.483 に答える