2

假设我们有按钮

<h:form>
<p:commandButton id="refreshButton" value="refresh all depending components"/>
</h:form>

在此过程中,我将添加在单击按钮时应更新的组件。所以使用 update="text1,text2" 是不够的,因为 text3 可能会在以后添加,并且不需要更改刷新按钮。

<h:outputText id="text1" value="{bean.someValue1}></h:outputText>
<h:outputText id="text2" value="{bean.someValue2}></h:outputText>

... 然后 ...

<h:outputText id="text3" value="{bean.someValue3}></h:outputText>

我想要做的是将组件绑定到按钮,而不是按钮依赖于组件

4

2 回答 2

5

你问的是不可能的。至少,不要在视图中使用标准方式。

但是有可能的是引用一个共同的父母。

<p:commandButton ... update="texts" />

...

<h:panelGroup id="texts">
    <h:outputText id="text1" ... />
    <h:outputText id="text2" ... />
    ...
    <h:outputText id="text3" ... />
</h:panelGroup>

根据问题中不清楚的具体功能要求,可能会有更好的解决方案。但是,如果归结为懒惰和/或避免“忘记”更改按钮,那么恐怕没有神奇的解决方法。

于 2012-09-08T14:15:32.443 回答
1

我通过使用做了一个临时的快速修复

<p:outputPanel autoUpdate="true">
    <h:outputText id="text3" ... />
<p:outputPanel />

猜猜它的性能并不完美,因为它将在所有 ajax 事件上更新,而不仅仅是我感兴趣的事件。但幸运的是,这个组件对所有这些事件都感兴趣,所以它不是问题 atm。

于 2012-09-09T11:18:05.047 回答