如何在使用转换器时引用复合组件内的组件

时间:2016-08-12 14:03:24

标签: jsf jsf-2 facelets composite-component

我有一个复合组件,主要由selectManyCheckbox组件组成。因为它应该以通用的方式设计,我使用

从调用级别传递selectItems,ajax处理等
<composite:insertChildren/>

这对大多数东西都很有效。现在我需要将这个复合组件与转换器一起使用。由于转换器(一种Omnifaces的ListConverter)并不是一直需要的(有时候我希望具有支持选择项的具体实体的值绑定,有时候我没有),我想通过它在前面提到的部分中(例如selectItems,ajax事件处理)。

鉴于此,有必要使用转换器标记的'for'属性来引用复合组件内的组件。至少这是我理解的。

不幸的是我不知道应该使用什么值。我是否必须包含复合组件的名称(命名容器)?我必须使用clientId吗?我已经尝试了很多组合,但尚未调用转换器。只要我将转换器标签放在复合组件定义中,它就可以工作。

为了方便起见,我们假设我有以下内容:

<composite:interface>
   <composite:attribute name="value" required="true"/>
</composite:interface>

<composite:implementation>
   [...]
   <h:selectManyCheckbox id="#{cc.attrs.id}" value="#{cc.attrs.value}">
        <composite:insertChildren/>
   </h:selectManyCheckbox>
   [...]
</composite:implementation>

此组件应按如下方式使用:

<my:selectManyCheckbox id="myComponent" value="...">
   <f:selectItems value="..."/>
   <o:converter for="___" converterId="..."/>
</my:selectManyCheckbox>

也许有人可以给我一个暗示应该赋予'for'属性的价值。

0 个答案:

没有答案
相关问题