JSF模板文件的显式目录

per*_*ian 3 java configuration jsf servlets web-applications

我刚刚进入Seam/JSF开发并寻找一种从不同位置查找XHTML模板文件的方法.

在配置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>
Run Code Online (Sandbox Code Playgroud)

当我输入如下网址时:

http://localhost/test.seam
Run Code Online (Sandbox Code Playgroud)

系统加载XHTML文件

<webapp>/test.xhtml
Run Code Online (Sandbox Code Playgroud)

我想配置的是前缀目录,以便从中查找文件

<webapp>/WEB-INF/views/test.xhtml
Run Code Online (Sandbox Code Playgroud)

那么,有没有办法实现这样的事情:

<context-param>
  <param-name>javax.faces.DEFAULT_PREFIX</param-name>
  <param-value>/WEB-INF/views/</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

Bal*_*usC 5

没有办法.我希望有一种方法,因为通过隐藏它们来阻止它们直接访问/WEB-INF会非常有用.我敢打赌,这也是你的实际功能要求.您可以通过(ab)使用声明性容器管理安全性来实现此目的.添加security-constrainturl-pattern*.xhtml一个空auth-constraintweb.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> 
Run Code Online (Sandbox Code Playgroud)