在更新中找不到primefaces组件id

问题描述 投票:0回答:1

这是我的表格

<form id=frmCalculation>
<p:messages id="msgs" showDetail="true" showSummary="false" redisplay="false" closable="true" escape="false" />
<panel>
<panelgrid id=statpanel>
</panelgrid>
<datatable id=dtEnrich>
<p:ajax event="filter" listener="#{enrichmentView.doFilter}" update="@this " />
<p:column filterby... filterMatchMode...>
...
</datatable>
</panel>
</form> 

在 statpanel 中,有几个 outputText 控件,当数据网格中过滤某些内容时,我每次都想更新它们。 在richmentview.doFilter 中,我为这些字段设置了新值,这些字段绑定到outputText 控件。

但是在ajax标记中,我无法弄清楚应该放置什么组件id才能更新outputText控件,当然还有由于过滤器而更新它的数据表。

我尝试使用“statpanel”,“:statpanel”,“:frmCalculation:statpanel”。每次我都会出现找不到 statpanel 控件的错误。 或者也有可能我想在msgs中显示一条消息,但它也不起作用。

当我输入@form或“frmCalculation”时,输出文本会更新,但数据表行/列会折叠(我只能看到一个长字符串中的单元格值)

jsf primefaces
1个回答
0
投票

最后,解决方案是将 widgetVar 添加到 panel 标签(panelGrid 的父级)。

<p:panel widgetVar="widget_pnl">
  <p:panelGrid id="statpanel" columns="3" layout="grid">

然后在更新中我可以使用

<p:ajax event="filter" listener="#{enrichmentView.doFilter}" update="@this @widgetVar(widget_pnl):statpanel " />
© www.soinside.com 2019 - 2024. All rights reserved.