Jsf 全球<;p:datatable>;使用<;p:选择一个功能表>;韩元';行不通

Jsf 全球<;p:datatable>;使用<;p:选择一个功能表>;韩元';行不通,jsf,jakarta-ee,primefaces,filter,datatable,Jsf,Jakarta Ee,Primefaces,Filter,Datatable,我试图在jsf页面上的数据表上实现一个全局过滤器。 输入文本过滤器可与以下代码配合使用: <p:inputText id="globalFilter" onkeyup="examTable.filter();" style="width:200px" /> 但是,当我对SelectOneMenu组件尝试相同的方法时,它将不起作用 我尝试过以下代码: <p:selectOneMenu id="state" value="#{examenListBean.stateOptio

我试图在jsf页面上的数据表上实现一个全局过滤器。 输入文本过滤器可与以下代码配合使用:

<p:inputText id="globalFilter" onkeyup="examTable.filter();" style="width:200px" />

但是,当我对SelectOneMenu组件尝试相同的方法时,它将不起作用

我尝试过以下代码:

<p:selectOneMenu id="state" value="#{examenListBean.stateOption}"onchange="examTable.filter();"> 

      <f:selectItems value="#{examenListBean.etatExamOptions}"/> 

</p:selectOneMenu>

但是没有用

这是我的p:datatable标签:

 <p:dataTable id="tabexam"
              paginatorPosition="bottom"
              var="exam"
              value="#{examenListBean.listexam}"
              widgetVar="examTable"
              emptyMessage="Aucun résultat n'a été trouvé avec les critères donnés"
              filteredValue="#{examenListBean.filteredexams}"
              paginator="true"
              rows="30" 
              paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
              rowsPerPageTemplate="5,10,15,30"
              resizableColumns="true">

尝试在服务器端进行过滤可能:

<p:selectOneMenu id="state" value="#{examenListBean.stateOption}"> 
            <f:selectItems value="#{examenListBean.etatExamOptions}"/> 
            <p:ajax event="change" process="@this" listener="#{myBean.filteringMethod}" update=":absPath:tabexam"/>
</p:selectOneMenu>


不知道您的JavaScript方法是什么样子的,可能尝试使用
并在那里更新您的表。

尝试在服务器端进行过滤可能:

<p:selectOneMenu id="state" value="#{examenListBean.stateOption}"> 
            <f:selectItems value="#{examenListBean.etatExamOptions}"/> 
            <p:ajax event="change" process="@this" listener="#{myBean.filteringMethod}" update=":absPath:tabexam"/>
</p:selectOneMenu>


我不知道你的JavaScript方法是什么样子的,也许可以尝试使用
更新你的表。

我也遇到过同样的问题,似乎只是primefaces不允许这种类型的东西。我的最终目标是能够将“selectOneMenu”表从列中移出并放入标题中,但目前我所做的就是这样

这是由于primefaces似乎访问它的结构的方式使它们为过滤器做好准备

我所做的是创建一个id为'globalFilter'的'hidden'p:inputText字段,并使id显示为:none

然后创建了两个搜索字段(一个使用Selecomenu,另一个仅为inputText字段)。 然后使用这些类型的onchange或onkeyup函数调用MyJavaScript函数,这些函数使用jQuery将隐藏字段更新为所选的值,然后调用crpTable特性

<script type="text/javascript">

        function doFilter1()
        {
            $("#globalFilter").val($("#globalFilter1").val());
            widgetVarTableId.filter();
        };
        function doFilter2()
        {
            $("#globalFilter").val($("#globalFilter2").val());
            widgetVarTableId.filter();
        };

</script>

<style>
   .myGlobalFilter {
      display:none;       
   }

</style>

函数doFilter1()
{
$(“#全局过滤器”).val($(“#全局过滤器1”).val());
widgetVarTableId.filter();
};
函数doFilter2()
{
$(“#全局过滤器”).val($(“#全局过滤器2”).val());
widgetVarTableId.filter();
};
myGlobalFilter先生{
显示:无;
}
在我的f:facet name=头中我有

<p:inputText id="globalFilter" styleClass="myGlobalFilter"/>

<h:outputText value="filter one: "/>
<h:selectOneMenu id="globalFilter1" onchange="doFilter1();">
   <f:selectItems value="#{formBean.filterOptions}" />
</h:selectOneMenu>

<h:outputText value="filter two: "/>
<p:inputText id="globalFilter2" onkeyup="doFilter2();">

这正是我所期望的。。然而,使用primefaces.filter()的缺点是不能将其更改为“精确”“startsWith”等,它总是“包含”而不修改PF源代码


希望这有帮助

我也遇到过同样的问题,似乎只是primefaces不允许这种事情。我的最终目标是能够将“selectOneMenu”表从列中移出并放入标题中,但目前我所做的就是这样

这是由于primefaces似乎访问它的结构的方式使它们为过滤器做好准备

我所做的是创建一个id为'globalFilter'的'hidden'p:inputText字段,并使id显示为:none

然后创建了两个搜索字段(一个使用Selecomenu,另一个仅为inputText字段)。 然后使用这些类型的onchange或onkeyup函数调用MyJavaScript函数,这些函数使用jQuery将隐藏字段更新为所选的值,然后调用crpTable特性

<script type="text/javascript">

        function doFilter1()
        {
            $("#globalFilter").val($("#globalFilter1").val());
            widgetVarTableId.filter();
        };
        function doFilter2()
        {
            $("#globalFilter").val($("#globalFilter2").val());
            widgetVarTableId.filter();
        };

</script>

<style>
   .myGlobalFilter {
      display:none;       
   }

</style>

函数doFilter1()
{
$(“#全局过滤器”).val($(“#全局过滤器1”).val());
widgetVarTableId.filter();
};
函数doFilter2()
{
$(“#全局过滤器”).val($(“#全局过滤器2”).val());
widgetVarTableId.filter();
};
myGlobalFilter先生{
显示:无;
}
在我的f:facet name=头中我有

<p:inputText id="globalFilter" styleClass="myGlobalFilter"/>

<h:outputText value="filter one: "/>
<h:selectOneMenu id="globalFilter1" onchange="doFilter1();">
   <f:selectItems value="#{formBean.filterOptions}" />
</h:selectOneMenu>

<h:outputText value="filter two: "/>
<p:inputText id="globalFilter2" onkeyup="doFilter2();">

这正是我所期望的。。然而,使用primefaces.filter()的缺点是不能将其更改为“精确”“startsWith”等,它总是“包含”而不修改PF源代码


希望这有帮助

事实上,我正在寻找一种过滤方法,而不是对数据表进行排序,我也有服务器端过滤的工作方法,我需要的是客户端过滤,尤其是选择选项,因为我处理的是大块数据。虽然你的方法非常快,然后将类似oncomplete的javascript回调放在
标记上。在代码中实际不起作用的是什么,回调不会启动,或者JS方法不能与
一起工作<代码>也不会触发?所以问题出在JavaScript中。使用一些开发人员工具来确定您是否使用jQuery/JavaScript在前端选择了正确的ID/对象。实际上,我正在寻找一种过滤方法,而不是对数据表进行排序,而且我有服务器端过滤的工作方法,我需要的是客户端过滤,尤其是选择选项,因为我处理的是大块数据。虽然您的方法非常快速,而且非常有用。然后将类似oncomplete的javascript回调放在
标记上。代码中实际不起作用的是,回调未启动,或者您的JS方法无法使用
<代码>也不会触发?所以问题出在JavaScript中。使用一些开发人员工具来确定您是否使用jQuery/JavaScript在前端选择了正确的ID/对象。它可能与相关。它可能与相关。辉煌的解决方案谢谢您,尽管不幸的是“包含”。辉煌的解决方案谢谢您,尽管不幸的是“包含”。