Datatable的过滤器在overlaypanel内的数据表中也不起作用,也在对话框内(primefaces)

时间:2015-07-08 15:31:25

标签: jsf jsf-2 primefaces datatable lazy-loading

我有下一个完美运作的代码:

    <p:inputText id="nombreProvedor_dinissan2"   readonly="true"  />
    <p:overlayPanel for="nombreProvedor_dinissan2" style="width: 500px" widgetVar="proveedoresPnl_dinissan2" id="pnl" dynamic="true" >
        <p:dataTable    value="#{proveedoresMB.proveedores}"
                        var="proveedor" 
                        emptyMessage="No hay proveedores disponibles"
                        paginator="true" rows="10"
                        rowsPerPageTemplate="5,10,15"
                        paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
                        selectionMode="single" 
                        lazy="true"
                        rowKey="#{proveedor.iNit}" >

            <p:ajax event="rowSelect" oncomplete="PF('proveedoresPnl_dinissan2').hide()" listener="#{proveedoresMB.seleccionarProveedor}" />

            <p:column headerText="Nit" filterBy="#{proveedor.iNit}" filterMatchMode="contains" >
                <p:outputLabel value="#{proveedor.iNit}" />
            </p:column>
            <p:column headerText="Nombre/Razón Social" filterBy="#{proveedor.sProveedor}" filterMatchMode="contains" >
                <p:outputLabel value="#{proveedor.sProveedor}" />
            </p:column>
        </p:dataTable>
    </p:overlayPanel>

但我需要相同的内部对话框:

<p:dialog header="Crear Servicio Público" 
              widgetVar="crearServicioPublicoWV"
              id="crearServicioPublicoDlg"
              modal="true">
        <p:inputText id="nombreProvedor_dinissan3"   readonly="true"  />        
        <p:overlayPanel for="nombreProvedor_dinissan3" style="width: 500px" widgetVar="proveedoresPnl_dinissan3" dynamic="true" >
            <p:dataTable    value="#{proveedoresMB.proveedores}"
                            var="proveedor" 
                            emptyMessage="No hay proveedores disponibles"
                            paginator="true" rows="10"
                            rowsPerPageTemplate="5,10,15"
                            paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
                            selectionMode="single" 
                            lazy="true"
                            rowKey="#{proveedor.iNit}" >

                <p:ajax event="rowSelect" oncomplete="PF('proveedoresPnl_dinissan3').hide()" listener="#{proveedoresMB.seleccionarProveedor}" />

                <p:column headerText="Nit" filterBy="#{proveedor.iNit}" filterMatchMode="contains" >
                    <p:outputLabel value="#{proveedor.iNit}" />
                </p:column>
                <p:column headerText="Nombre/Razón Social" filterBy="#{proveedor.sProveedor}" filterMatchMode="contains" >
                    <p:outputLabel value="#{proveedor.sProveedor}" />
                </p:column>
            </p:dataTable>
        </p:overlayPanel>
</p:dialog>

它是相同的代码,不同之处在于对话框内部。现在,过滤器无法在对话框中工作。当我过滤表格时,过滤器地图总是空的!

@Override
public List<ProveedorVO> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,Object> filters) {
    System.out.println("Filtros: " + filters);
    for (String key : filters.keySet()) {
        System.out.println( key + ":" + filters.get(key));
    }
}

有什么想法吗?谢谢!

我正在使用PrimeFaces 5.2,JSF 2.1在JBoss EAP 6.1上运行

1 个答案:

答案 0 :(得分:0)

我刚刚解决了同样的情况。 尝试将h:form标记添加到dataTable标记周围。

相关问题