【发布时间】:2011-11-23 08:52:45
【问题描述】:
我在数据表中使用延迟加载和分页,并且工作正常。问题是我在同一个html页面中有一个高级搜索功能,当我点击搜索按钮时,我希望我的dataTable根据我在高级搜索字段中输入的值进行更新(这个功能在@实现987654321@, 代码如下。但是我按钮上的更新属性似乎没有做任何事情,因为没有调用惰性模型的加载方法。所以问题是:我可以以某种方式从模型外部调用惰性模型的加载方法来更新我的数据表吗?
表格:
<h:form id="frmCli">
<p:commandButton value="Buscar"
update="frmCli:panelResultadosDoc"/>
<h:panelGroup id="panelResultadosDoc">
<div class="dataTable">
<p:dataTable id="documentos"
value="#{documentoBuscadorBean.lazyModel}"
lazy="true"
var="varDocBean"
paginator="true"
paginatorPosition="bottom"
paginatorAlwaysVisible="false"
rows="5">
<p:column>
<f:facet name="header">Código</f:facet>
<h:outputText value="#{varDocBean.documento.id}"/>
</p:column>
</p:dataTable>
</div>
</h:panelGroup>
</h:form>
包含模型的 Bean:
@ManagedBean
@SessionScoped
public class DocumentoBuscadorBean {
private LazyDataModel<DocumentoBean> lazyModel;
@SuppressWarnings("serial")
public DocumentoBuscadorBean() {
lazyModel = new LazyDataModel<DocumentoBean>() {
public List<DocumentoBean> load(int first, int pageSize, String sortField, boolean sortOrder, Map<String,String> filters) {
List<DocumentoBean> lazyListDocumentos = new ArrayList<DocumentoBean>();
try {
lazyListDocumentos = DaoFactory.getDocumentoDao().buscarLazy(first, pageSize);
} catch (DocumentoException e) {
e.printStackTrace();
}
return lazyListDocumentos;
}
};
lazyModel.setRowCount(DaoFactory.getDocumentoDao().rowCount());
lazyModel.setPageSize(5);
}
public LazyDataModel<DocumentoBean> getLazyModel() {
return lazyModel;
}
}
【问题讨论】:
标签: java jsf primefaces