提出这些问题后:
- https://stackoverflow.com/questions/8589315/jsf2-dynamic-template https://stackoverflow.com/questions/8589315/jsf2-dynamic-template
- 动态用户界面:包括 https://stackoverflow.com/questions/8786793/dynamic-uiinclude
- 如何检索 @WindowScoped 上的对象? https://stackoverflow.com/questions/8911985/how-can-i-retrieve-an-object-on-windowscoped
- 如何检查使用 @WindowScoped 存储的对象是否正确存储? https://stackoverflow.com/questions/8939037/how-can-i-check-if-an-object-stored-with-windowscoped-is-stored-correctly
- ICE Faces 和在 WindowScoped 中创建 bean 时出现错误 https://stackoverflow.com/questions/9001426/ice-faces-and-error-in-creation-of-a-bean-in-windowscoped
我编写的所有内容都是为了解决 JSF2 框架的“愚蠢”问题,事实上我无法直接链接到存储在/WEB-INF
子文件夹。之后我在 Google 和 Stackoverflow 上进行了一些研究,我知道了一件事:如何构建 JSF2 Web 项目?
特别是,我到底应该把 XHTML 页面放在哪里?
文件位于/WEB-INF
最终用户确实无法公开访问文件夹。所以你不能有类似的东西http://localhost:8080/contextname/WEB-INF/some.xhtml
。这将是一个潜在的安全漏洞,因为最终用户可以查看其他内容/WEB-INF/web.xml
等等。
但是您可以使用/WEB-INF
用于放置主模板文件、包含文件和标记文件的文件夹。例如,以下模板客户端page.xhtml
放置在外面/WEB-INF
并且可以通过以下方式访问http://localhost:8080/contextname/page.xhtml
:
<ui:composition template="/WEB-INF/templates/template.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
>
<ui:define name="content">
...
<ui:include src="/WEB-INF/includes/include.xhtml" />
...
</ui:define>
</ui:composition>
将主模板和包含文件放置在/WEB-INF
是最终用户无法通过在浏览器地址栏中输入/猜测其 URL 来直接打开它们。直接访问的普通页面和模板客户端不得放置在/WEB-INF
folder.
顺便说一句,复合组件文件也不应该公开访问,但是按照规范要求它们放置在/resources
默认情况下可公开访问的文件夹。如果您确保使用以下方式访问所有资源因此提供了组件 https://stackoverflow.com/questions/8367421/how-to-reference-resource-in-facelets-template/8368727#8368727这样它们就永远不会被访问/resources
在 URL 中(而是通过/javax.faces.resource
),那么你可以添加以下约束web.xml
阻止所有公众访问/resources
folder:
<security-constraint>
<display-name>Restrict direct access to the /resources folder.</display-name>
<web-resource-collection>
<web-resource-name>The /resources folder.</web-resource-name>
<url-pattern>/resources/*</url-pattern>
</web-resource-collection>
<auth-constraint />
</security-constraint>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)