我在小面孔中有一个<p:dataTable>
。 facelet包含在页面中。选择一个表行应该触发对周围页面元素的更新。
当我在表格中包含<p:ajax event="rowSelect" update=":open:separate" />
时,一切正常。但是我在多个页面上使用该表,并且不能保证更新元素的常量Id。
我尝试从表中删除<p:ajax>
并将包含的表格包装在其中:
<p:ajax event="rowSelect" update=":open:separate">
<ui:include src="/open/components/submittersTable.xhtml"/>
</p:ajax>
我收到此错误(根本原因删节):
javax.servlet.ServletException: /open/index.xhtml @30,59 <p:ajax> Event:rowSelect is not supported.
javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62)
root cause
javax.faces.view.facelets.TagException: /open/index.xhtml @30,59 <p:ajax> Event:rowSelect is not supported.
org.primefaces.component.behavior.ajax.AjaxBehaviorHandler.applyAttachedObject(AjaxBehaviorHandler.java:148)
org.primefaces.component.behavior.ajax.AjaxBehaviorHandler.apply(AjaxBehaviorHandler.java:126)
我对<p:ajax>
的可能性有错误的想法吗?我是否必须将其包含在表格中并尝试强制周围页面上的ID适合?或者可以用include
包裹ajax
并且我做错了吗?
谢谢
答案 0 :(得分:1)
不,因为 event =“rowSelect”,你不能。对 event =“rowSelect”的一些解释意味着“选择了数据表中的一行”。所以你不能在p:dataTable之外使用它。
答案 1 :(得分:0)
我找到了一种不同的方法 - 为facelet设置ui参数肯定比使用facelet为所有视图强制执行ID更好。
可以安全地将<p:ajax>
标记留在facelet表中,只需在包含网站上定义一个参数:
<ui:include src="/open/components/submittersTable.xhtml">
<ui:param name="updateParam" value=":open:content" />
</ui:include>
并更改updated
属性以使用此参数:
<p:ajax event="rowSelect" update="#{updateParam}" />