2011-09-09 37 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

感谢您始终保持乐于助人! (我实际上已经忘记了多少次,我向你表示感谢......)=) –