JSF Composite Component,更改目标元素上的事件

时间:2013-08-14 08:03:17

标签: jsf jsf-2 composite-component

我们构建了以下组件:

  <h:panelGroup id="#{cc.attrs.id}Component" rendered="#{cc.attrs.rendered}">
  <div id="#{cc.attrs.id}" class="select #{cc.attrs.styleClass}" >
    <h:inputText id="input" disabled="#{cc.attrs.disabled}"
      value="#{cc.attrs.value}"
      tabindex="#{cc.attrs.tabindex}" maxlength="#{cc.attrs.maxlength}" 
      converter="#{cc.attrs.converter}">
      <a4j:ajax event="change" render="select" />        
    </h:inputText>
    <rich:select disabled="#{cc.attrs.disabled}"
      id="select" value="#{cc.attrs.value}"
      listWidth="#{cc.attrs.listWidth}"
      converter="#{cc.attrs.converter}">          
      <f:selectItems value="#{cc.attrs.items}" var="si"
        itemValue="#{xyz}" itemLabel="#{xyz.name}" />
      <a4j:ajax event="selectitem" render="input" />           
    </rich:select>
    </div>        
  </h:panelGroup>

我们已经定义我们接受带有目标输入的更改事件并选择:

<composite:clientBehavior name="change" event="change" targets="input select"/>     

但是对于选择项我们确实需要将事件设为“selectItem”而不是“更改”。

显然我们可以接受界面中的“change”和“selectItem”,但这意味着实现者必须同时指定change和selectItem动作。

<a4j:ajax event="change" ... />
<a4J:ajax event="selectItem" ... />

我们有什么方法可以将目标输入上的事件从更改更改为selectItem?

1 个答案:

答案 0 :(得分:0)

可能是这样的。

<composite:clientBehavior name="change" event="change" targets="input"/>
<composite:clientBehavior name="change" event="selectItem" targets="select"/>