2
votes

I have the next code that work perfectly:

    <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>

But i need the same insede dialog:

<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>

It's the same code, the diferent is that is inside the dialog. Now, the filter not work in dialog. When I filter the table, the filter map always is empty!

@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));
    }
}

Any idea? Thanks!

I'm using PrimeFaces 5.2, JSF 2.1 runing on JBoss EAP 6.1

1
So you say that if you remove the overlayPanel, it works? Or if you remove the dynamic attribute of the overlayPanel it works to? Or if you remove the modal attribute of the dialog it works? Or if you remove paging it works? Please create an mcve... And try if putting a form inside the dialog helps (without making it nested) - Kukeltje
try adding appendTo="@(body)" on your dialog and appendToBody="true" on your overlayPanel respectively. - Fritz

1 Answers

0
votes

I have just resolved same case. Try add h:form tag to around dataTable tag.