Jsf f:view与许多已定义的资源库契约的行为如何?

Jsf f:view与许多已定义的资源库契约的行为如何?,jsf,jsf-2.2,resource-contracts,Jsf,Jsf 2.2,Resource Contracts,我们试图使用JSF2.2中的特性,同时使用许多合同,如“contract1,contract2” 在合同1中,我们有一个文件style1.css,在合同2中,我们有一个style2.css。我们通过标记将这两种内容都包含在视图中 如果我只在视图中使用contracts=“contract1”,那么JSF日志中缺少style2.css,这是合乎逻辑的 如果我使用contracts=“contract1,contract2”,JSF同时导入style1.css和style2.css,但url有错误(

我们试图使用JSF2.2中的
特性,同时使用许多合同,如“contract1,contract2”

在合同1中,我们有一个文件
style1.css
,在合同2中,我们有一个
style2.css
。我们通过
标记将这两种内容都包含在视图中

如果我只在视图中使用
contracts=“contract1”
,那么JSF日志中缺少
style2.css
,这是合乎逻辑的

如果我使用
contracts=“contract1,contract2”
,JSF同时导入
style1.css
style2.css
,但url有错误(它使用
&con=contract1
而不是
&con=contract2
来获取资源)


是虫子吗?这正常吗?我找不到任何关于同时使用许多合同的文档。

这是正常的行为,正如我在教科书中发现的那样。摘录:

可以将多个合同映射到单个映射。在这种情况下,它将按顺序遍历每个合同,以查找所需的模板。一旦找到模板,它将停止处理其他模板

至于为什么它被允许,如果它要做的只是选择第一个合适的选项,我同意你的观点,毕竟这可能是毫无意义的

参考:


我还没有读过这方面的规范,但从逻辑上讲,所有合同(“主题”)都应该由完全相同的资源文件组成。基本上,改变的不是资源,而是资源的内容。答案是将这两个文件重命名为具有相同名称的
style.css
。但是如果每个契约必须定义所有资源,那么允许同时使用多个契约又有什么意义呢?如果我设置了
contracts=“c1,c2”
,并且如果c1和c2都定义了所有资源,那么它们中的一个总是会被另一个静音,对吗?嗯,也许你是对的。我刚刚阅读了这方面的规范,但规范本身似乎没有提到在
中使用多个契约。因此,这意味着JSF会查找第一个资源,尝试查找匹配的契约,然后只对以下所有资源使用这个契约?毫无意义:-/不过,我会向JSF规范人员报告,我相信这个规范在这里被破坏了。如果未找到资源(易于检查),则应在下一个合同(如果有)中进行搜索。