我正在尝试使用Primefaces选择器,它似乎无法更新panelGroup
。
<h:panelGroup layout="block" styleClass="updateMe">
<h:outputText value="#{bean.value}"/>
</h:panelGroup>
<h:form>
<h:inputText value="#{bean.value}"/>
<h:commandButton value="submit">
<p:ajax process="@form" update="@(.updateMe)" oncomplete="alert(1)"/>
</h:commandButton>
</h:form>
在这种情况下,panelGroup
永远不会更新。但是,如果我将panelGroup
更改为<p:outputPanel>
,那么它运行正常。
观察生成的HTML,唯一的区别是<span>
生成的panelGroup
没有id
而outputPanel
生成的id
有{{1}} 1}}。这可能是第一个没有更新的原因(cos jQuery选择器找不到组件ID?)
如果是这种情况,是否有任何其他组件没有任何ID,使用Primefaces选择器时应该避免使用?
答案 0 :(得分:4)
使用Primefaces选择器时,jQuery用于在客户端选择组件,并发现其客户端ID。发送AJAX时,发送的参数之一是javax.faces.partial.render
,其值是应更新的组件的客户端ID。如果组件没有客户端ID,则无法直接更新,例如,您可以更新父组件。为panelGroup
提供id属性,并尝试使用Primefaces选择器更新它。