2011-09-09 60 views
3

我開始探索JSF 2 facelet,我想在一個簡單的項目中測試它。JSF 2訪問Facelet文件

我只是對JSF 2中的文件結構進行了一些查詢。當我使用Spring時,我用我的所有頁面放在WEB-INF下,以便它們不會被瀏覽器訪問。

我注意到在JSF 2中,您應該將* .xhtml放在WEB-INF之外,並允許通過 Faces Servlet訪問它們。

問題,這是否意味着所有使用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的第三種方法是將FacesServlet地圖只是直上*.xhtml而不是*.jsf或什麼的。這樣你就不需要用安全約束或過濾器來湊合,以防止最終用戶直接訪問*.xhtml文件。它唯一的缺點是你不能在不調用FacesServlet的情況下服務「普通香草」XHTML文件,但這反過來已經沒有多大意義,因爲這樣的文件在技術上應該具有*.html擴展名。

請注意,這在舊的JSF 1.x中不起作用。 FacesServlet將運行在無限循環中,一次又一次地調用它自己。

+0

這樣做是否證實了我對上述兩種方法的理解?也感謝這第三種方法,因爲我從來沒有想過或讀過這個? –

+0

是的,你的理解是正確的。這就是他們如何爲JSF 1.x做的。它也適用於JSF 2.x,但如果您只是在同一個視圖擴展上映射'FacesServlet',那麼這不是必需的。 – BalusC

+0

感謝您始終保持樂於助人! (我實際上已經忘記了多少次,我向你表示感謝......)=) –