0

我有<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 适合?或者是否可以包装includeajax 我只是做错了?

谢谢

4

2 回答 2

1

不,你不能因为event="rowSelect"event="rowSelect"的一些解释意味着“选择了数据表中的一行”。所以你不能在 p:dataTable 之外使用它。

于 2012-08-09T07:49:55.727 回答
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}" />
于 2012-08-09T10:58:54.007 回答