私はJSF 2 Webアプリケーションを開発しています。威信に恵まれた人々のために、すべてのURLは.jsf
という拡張子で終わるようにしたいと思います。今度は.xhtml
で終わります。 Webブラウザのアドレスバーの.jsf
に直接変更すると、HTTP 500エラーが表示されます。URLで.jsf拡張子を使用するには?
どうすれば.jsf
に設定できますか?
私はJSF 2 Webアプリケーションを開発しています。威信に恵まれた人々のために、すべてのURLは.jsf
という拡張子で終わるようにしたいと思います。今度は.xhtml
で終わります。 Webブラウザのアドレスバーの.jsf
に直接変更すると、HTTP 500エラーが表示されます。URLで.jsf拡張子を使用するには?
どうすれば.jsf
に設定できますか?
<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>
私はそれが正しいとは思わない。これはディスク上の実際のファイルの拡張子です。 OPはURLサフィックスを必要とします。これはweb.xmlのサーブレットマッピングのurl-patternを使って変更します(JSF 2.1では* .jsfがデフォルトであるためweb.xmlを省略します)。 –
前のコメントは忘れてしまいましたが、コメントはdefault_suffixだけを変更するという別の回答でした。この場合、サーブレットマッピングで十分です。default_suffixを変更する必要はありません。 –
あなたはあなたの答えをあなたに教えてください。おそらく他の情報源に関しては正しいでしょう。遅れて申し訳ありません - 私はバケーションにいました。もう1つの助けを求めることができますか?私がそれを使用し、page.jsfにアクセスすると(page.xhtmlはサーバ側に存在します)、ヌルポインタの例外がスローされます。どこに問題がありますか? web.xml:http://pastebin.com/3NqyYXSLがあり、スタックプリントがあります。http://pastebin.com/g76TgabF – Tomas
JSFページのURLパターンはweb.xml
にFacesServlet
の<servlet-mapping>
によって指定されます。あなたが希望する仮想URLの拡張子を取得するために適宜<url-pattern>
を変更する必要が
<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>
:あなたは.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>*.jsf</url-pattern>
</servlet-mapping>
具体的な機能要件を達成するためには、すべてを変更する必要があります。
ですが、これによりセキュリティ上の問題が発生します。エンドユーザは、URL内の拡張子を.jsf
から.xhtml
に変更するときに、生のFaceletsファイルのソースコードを表示できるようになりました。あなたは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>
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>
なぜあなたはすでに与えられた答えを繰り返すのですか? – BalusC
今日では、それは '.do'でそれを終了するの威信目的です。 –
@RomanC 2001年に人気がなかったのは? (Struts 1)最近では拡張機能を使用していないのはもっと涼しいかもしれません;)JSFではOmniFacesやPrettyFacesを使用できます。 –
それは彼らが各ISBNに追加するのと同じくらい人気があります。例えば、http://shop.oreilly.com/product/9780596005726.do –