【发布时间】:2015-09-26 15:10:35
【问题描述】:
我有下一个完美运行的代码:
<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>
但我需要相同的 insede 对话框:
<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));
}
}
有什么想法吗?谢谢!
我正在使用在 JBoss EAP 6.1 上运行的 PrimeFaces 5.2、JSF 2.1
【问题讨论】:
-
所以你说如果你去掉overlayPanel就可以了?或者,如果您删除了它适用的 overlayPanel 的动态属性?或者,如果您删除了对话框的 modal 属性,它会起作用吗?或者,如果您删除分页,它会起作用吗?请创建一个 mcve ...并尝试在对话框中放置一个表单是否有帮助(不使其嵌套)
-
尝试在您的对话框中添加 appendTo="@(body)" 并在您的 overlayPanel 上分别添加 appendToBody="true"。
标签: jsf jsf-2 primefaces datatable lazy-loading