JSF更新复合组件

Ari*_*iod 5 java primefaces jsf-2

是否可以通过指定父组合ID来更新组合组件的子组件?例如,如果我有:

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

<composite:implementation>
    <p:treeTable id="main-tree" ...>
        ...
    </p:treeTable>

</composite:implementation>
Run Code Online (Sandbox Code Playgroud)

并以某种方式使用它:

<my:comp id="composite-component" />

...

<p:ajax update="composite-component" />
Run Code Online (Sandbox Code Playgroud)

那可能吗?现在,我看到的唯一方法是明确指定子组件ID:

<p:ajax update="composite-component:main-tree" />
Run Code Online (Sandbox Code Playgroud)

Mat*_*ndy 15

这可以通过包装<div>复合组件实现并设置div来完成id=#{cc.clientId}:

<html ...>
    <composite:interface>
       ...
    </composite:interface>

    <composite:implementation>
      <div id="#{cc.clientId}">
        ...
      </div>
    </composite:implementation>    
</html>
Run Code Online (Sandbox Code Playgroud)

在使用页面中:

<my:comp id="composite-component" />
....
<h:commandButton value="Update first name">
   <f:ajax execute="composite-component" render="composite-component">
</h:commandButton>
Run Code Online (Sandbox Code Playgroud)

<p:ajax>应相应工作.