我正在尝试 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
。这可能是第一个没有更新的原因(因为 jQuery 选择器找不到组件 ID?)
如果是这种情况,是否有任何其他组件没有任何 id,并且在使用 Primefaces 选择器时应避免使用?
最佳答案
当使用 Primefaces 选择器时,jQuery 用于选择客户端的组件,并发现它们的客户端 ID。发送 AJAX 时,发送的参数之一是 javax.faces.partial.render,其值是应更新的组件的客户端 ID。如果组件没有客户端 ID,则无法直接更新,例如您可以更新父组件。为 panelGroup
提供 id 属性,并尝试使用 Primefaces 选择器更新它。
关于jsf-2 - Primefaces 选择器不更新 panelGroup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15081170/