2012-03-15 86 views
3

是否可以通過指定父組合組件來更新組合組件的子組件?例如。如果我有:JSF更新複合組件

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

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

</composite:implementation> 

,並以某種方式使用它是這樣的:

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

... 

<p:ajax update="composite-component" /> 

這可能嗎?現在我看到的唯一方法是顯式指定的子組件ID:

<p:ajax update="composite-component:main-tree" /> 

回答

13

這可以通過圍繞您的複合材料部件實施<div>來完成,並設置div的id=#{cc.clientId}

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

    <composite:implementation> 
     <div id="#{cc.clientId}"> 
     ... 
     </div> 
    </composite:implementation>  
</html> 

而且在使用頁面:

<my:comp id="composite-component" /> 
.... 
<h:commandButton value="Update first name"> 
    <f:ajax execute="composite-component" render="composite-component"> 
</h:commandButton> 

<p:ajax>小號應該相應地工作。