JSF模板文件的明确目录
问题描述:
我刚刚进入Seam/JSF开发并寻找从另一个位置查找XHTML模板文件的方法。JSF模板文件的明确目录
在配置JSF应用程序是这样的:
<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>*.seam</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
当我进入
像一个网址:
http://localhost/test.seam
系统加载在
<webapp>/test.xhtml
我”什么的XHTML文件d想要配置的是前缀目录,因此该文件正在从
<webapp>/WEB-INF/views/test.xhtml
那么,有没有什么办法才达到这样的事:
<context-param>
<param-name>javax.faces.DEFAULT_PREFIX</param-name>
<param-value>/WEB-INF/views/</param-value>
</context-param>
感谢您的帮助!
答
没有办法。我希望有一种方法,因为通过将它们隐藏在/WEB-INF
中来阻止他们直接访问会非常有用。我敢打赌,这也是你的实际的功能需求。您可以通过(ab)使用声明性容器管理的安全性来实现此目的。添加上的*.xhtml
的url-pattern
一个security-constraint
一个空auth-constraint
到web.xml
喜欢如下:
<security-constraint>
<display-name>Restrict direct access to XHTML files</display-name>
<web-resource-collection>
<web-resource-name>XHTML files</web-resource-name>
<url-pattern>*.xhtml</url-pattern>
</web-resource-collection>
<auth-constraint />
</security-constraint>
不错的解决方法,但我想这只能如果脸部的servlet映射到从XHTML不同的扩展。当面部servlet映射到/ faces或* .xhtml时,你知道有什么办法可以实现吗? – 2010-07-21 12:18:56
@Jörn:如果'FacesServlet'被映射到'* .xhtml',没有什么可担心的。访问'* .xhtml'然后会以任何方式调用'FacesServlet' ** **)但是如果它被映射到'/ faces',那么你唯一的手段就是一个'Filter',它将检查文件夹和扩展名并相应地处理返回401或403)。使用声明性安全措施无法做到这一点。 – BalusC 2010-07-21 12:37:19