我在表单中有一些代码块,如下一个代码。
<a4j:outputPanel id="listValues">
<a4j:repeat value="#{listBean.values}" var="aValue">
<a4j:outputPanel rendered="#{not empty aValue.value}">
<h:selectBooleanCheckbox id="selectRecordCheck"
value="#{listBean.aValueSelectedMap[aValue.value]}">
<a4j:ajax event="valueChange" execute="@this"
render="tagsValues, listValues"
listener="#{listBean.listenerValueChange}" />
<a4j:param name="id" value="#{aValue.value}" />
<a4j:param name="value"
value="#{listBean.aValueSelectedMap[aValue.value]}" />
</h:selectBooleanCheckbox>
<h:outputLabel value="#{aValue.label}" />
<br />
</a4j:outputPanel>
</a4j:repeat>
</a4j:outputPanel>
<a4j:outputPanel id="tagsValues">
<table>
<a4j:repeat value="#{listBean.listaVirtualEstadoSeleccionados}"
var="tag">
<tr>
<td><h:outputText styleClass="tags" value="#{tag}" /></td>
</tr>
</a4j:repeat>
</table>
</a4j:outputPanel>
问题是单击checkBox会重新加载其他checkBox组的列表(调用其他managedBean属性)。
如何避免这种行为?
在JBoss AS6.1.0上运行,Mojarra 2.0.3,RichFaces 4.3.7 THX
答案 0 :(得分:0)
确定,
我们有Mojarra 2.0.3-b05版本。我已经升级到2.0.11(我发现了一些关于2011年可能存在关联的2.1的错误)并添加到a4j:ajax元素以下代码
immediate="true" limitRender="true" bypassUpdates="true"
也许添加属性就足够了,但我认为升级jsf版本无论如何都是个好主意。
PD:我认为存在一个错误,因为我认为它没有感觉到这种行为。