如何更新从辅助bean生成的id

时间:2012-01-19 03:51:47

标签: jsf primefaces

<p:outputPanel>
    <h:selectOneRadio value="#{myBean.favColor1}">
  <f:selectItem itemValue="Red" itemLabel="Color1 - Red" />
  <f:selectItem itemValue="Green" itemLabel="Color1 - Green" />
  <f:selectItem itemValue="Blue" itemLabel="Color1 - Blue" />
    </h:selectOneRadio>
    <p:ajax update="picker,#{myBean.clientId}"/>
</p:outputPanel>

我需要更新以编程方式生成id的组件。

1 个答案:

答案 0 :(得分:2)

客户端ID应该以默认命名容器分隔符:作为前缀,以便它将被绝对解析为UIViewRoot,而不是相对于父命名容器(这将适用于组件ID) ,但不适用于客户ID)。

<p:ajax update="picker,:#{myBean.clientId}"/>

作为一个完全不同的替代方案(我发现将客户端ID绑定到支持bean非常痒),只需将组件绑定到视图并引用它而不是通过中间托管bean。

<h:someComponent binding="#{foo}" />
...

<p:ajax update="picker,:#{foo.clientId}"/>