【发布时间】:2014-03-03 17:02:42
【问题描述】:
JSF 规范 2.2 (2013-03-20) 在第 10.3.3.1 项(声明用于 Facelet 页面的复合组件库)中说:
如果在 XHTML 页面中声明了 facelet 标记库,其命名空间以字符串开头 “http://java.sun.com/jsf/composite/”(不带引号),命名空间声明的其余部分 被视为资源库的名称 [...]
如果“http://java.sun.com/jsf/composite/”后面的子字符串包含“/”字符,或任何对于库名称不合法的字符,则必须采取以下操作。如果 application.getProjectStage() 是 Development,则必须在页面中放置一条信息性错误消息并进行记录。否则必须只记录该消息。
这意味着拥有以下文件夹结构是非法的:
resources
components
system
something_specific
something_even_more_specific
并引用库名称“http://java.sun.com/jsf/composite/components/something_specific”?这是正确的吗?
这似乎是一个奇怪的限制。我希望我的资源是结构化的,而不是一大堆。
这种分层库实际上可以在 Wildfly 8.0.0.CR1 中使用,但我不确定依赖这种行为是否明智。
欢迎提供“最佳实践”类型的答案。
【问题讨论】:
-
在
javax.faces.application.ResourceHandler.createResource(String)javadoc 中偶然发现以下内容:For historical reasons, this method operate correctly when the argument resourceName is of the form libraryName/resourceName, even when resourceName contains '/' characters.