2011-09-09 15 views
3

私はJSF 2のfaceletを探索し始めています。これを簡単なプロジェクトでテストしたいと思います。JSF 2 Faceletファイルへのアクセス

私は、Springを使用しているときに、 私はすべてのページをWEB-INFの下に置いてブラウザにアクセスできないようにしています。

JSF 2では、* .xhtmlをWEB-INFの外に置き、Facesサーブレット を介してアクセスできるようにする必要があります。

質問:これは、JSFを使用するすべてのエンタープライズアプリケーションが常に というセキュリティ制約をweb.xmlに追加することを意味しますか?その後、すべての着信要求をトラップし、

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>XHTML files</web-resource-name> 
     <url-pattern>*.xhtml</url-pattern> 
    </web-resource-collection> 
    <auth-constraint /> 
</security-constraint> 

それとも彼らは、フィルタのいくつかの並べ替えを使用しているが、* .xhtmlた要求 を拒否しますか?

私の理解は正しいのですか?もしそうなら、どちらを使うのがより簡単でしょうか?

おかげ

答えて

1

JSF 2.xで第3の選択肢はただまっすぐ*.xhtmlの代わりに、*.jsfまたは任意のFacesServletをマッピングすることです。この方法では、エンドユーザが*.xhtmlファイルに直接アクセスするのを防ぐために、セキュリティ制約またはフィルタを使用する必要はありません。 FacesServletを呼び出さずに「プレーンバニラ」XHTMLファイルを提供することはできないという唯一の欠点がありますが、技術的には*.htmlという拡張子を持つ必要があるため、あまり意味をなさないでしょう。

これは古いJSF 1.xでは機能しません。 FacesServletは何度も繰り返される無限ループで動作します。

+0

これは、私が上記の2つのアプローチに関する私の理解を確認するものですか?この3番目のアプローチのおかげで、これについて私が考えたり読んだことは一度もありませんでした。 –

+0

はい、あなたの理解は正しいです。それがJSF 1.xのやり方でした。 JSF 2.xでも動作しますが、同じビュー拡張で 'FacesServlet'をマップするだけであれば必要ありません。 – BalusC

+0

いつも助けてくれてありがとう! (私は実際に何回忘れて、あなたに感謝しました...)=) –

関連する問題