为什么 p:ajax 在 primefaces 5 和 JSF2 中不更新我的 h:outputText?

Why p:ajax doesn´t update my h:outputText in primefaces 5 and JSF2?

我有一个带过滤器的数据表

过滤器工作正常,但过滤器的结果不起作用。我在 p:inputText 中调用 ajax 来尝试刷新结果,但没有用

<h:outputText value="Result"/><h:outputText id="sizeFilterMyWork" value="#{caseManagement.myWork.size()}" />
<h:outputText value="Filter" id="myCaseOutputTextSearch" />
<p:inputText id="globalFilter" onkeyup="PF('myCaseTable').filter()" style="width:150px" >
   <p:ajax event="keyup" update="sizeFilterMyWork" listener="#{caseManagement.getSizefilteredMyWork}"></p:ajax>
</p:inputText>

在 bean 中,我有 myWork 的列表(使用 get 和 set)和用于过滤器的列表(使用 get 和 set),当页面加载时,结果调用的大小我的工作列表,然后,当我使用过滤器时,数据表正在缩小(所以它的工作)但结果的数量没有改变。 Ajax 应该调用方法 getSizefilteredMyWork 并更新结果但不起作用

豆子

private List<Case> myWork = new ArrayList<Case>(); // get and set
private List<Case> filteredMyWork; //get and set
public int getSizefilteredMyWork(final AjaxBehaviorEvent event)
{
    return filteredMyWork.size();
}

我该如何解决?

您的侦听器方法的 return 值被忽略,但您不需要它,因为 outputText 将直接从 myWork 获取其值。它应该获取 filteredMyWork 列表的大小。

您可以尝试将 ìnputText p:ajax 替换为 p:datatable 中的一个:

<p:ajax event="filter" process="@this" update="sizeFilterMyWork" />