使用PrimeFaces选择器更新非JSF组件的Ajax

时间:2013-04-12 11:42:26

标签: ajax jsf primefaces

是否可以使用Primefaces选择器更新任何html片段 - PFS? 考虑一下:

<h:outputText id="test" value="#{testBean.date}"/>
<span id="test2"><h:outputText value="#{testBean.date}"/></span>

<p:commandButton value="test" process="@none" update="@(#test)"/>
<p:commandButton value="test2" process="@none" update="@(#test2)"/>

只有第一个按钮令人耳目一新。 这是一个例子 - 我真正的需要是更新数据表的某些部分,而不刷新整个组件。

1 个答案:

答案 0 :(得分:3)

不,那是不可能的。更新目标不仅必须在客户端可以通过document.getElementById()在HTML DOM树中获得,而且还可以在服务器端通过UIViewRoot#findComponent()获得,以便JSF可以重新生成最终在ajax期间应用的所需HTML输出更新

如果为JSF提供纯HTML元素的ID,那么它将不会在组件树中找到任何内容来重新生成所需的新HTML输出。只需用JSF组件替换纯HTML元素。

PrimeFaces选择器最终转换为HTML元素ID。 PrimeFaces将循环遍历jQuery选择器找到的元素,并在传递给JSF之前提取它们的id属性。因此,这与此处已经回答的问题基本相同:Is it possible to update non-JSF components (plain HTML) with JSF ajax?