JSF 2 Web アプリケーションを開発しています。威信的な目的のために、すべての URL が.jsf
拡張子で終わることを望みます。で終わります.xhtml
。.jsf
Web ブラウザーのアドレス バーで直接変更すると、HTTP 500 エラーが表示されます。
どうすれば設定でき.jsf
ますか?
JSF 2 Web アプリケーションを開発しています。威信的な目的のために、すべての URL が.jsf
拡張子で終わることを望みます。で終わります.xhtml
。.jsf
Web ブラウザーのアドレス バーで直接変更すると、HTTP 500 エラーが表示されます。
どうすれば設定でき.jsf
ますか?
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>
<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>
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>