我在dataTable中使用延迟加载和分页,并且工作正常。问题是我在同一个html页面中有一个高级搜索功能,当我点击搜索按钮时,我希望我的dataTable根据我在高级搜索字段中输入的值进行更新(此功能在{ {1}}, 代码如下。但是我的按钮上的update属性似乎没有做任何事情,因为懒惰模型的加载方法没有被调用。所以问题是:我可以以某种方式从模型外部调用惰性模型的加载方法,以便更新我的dataTable吗?
FORM:
DaoFactory.getDocumentoDao().buscarLazy(first, pageSize)
包含模特的豆子:
<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>
答案 0 :(得分:2)
如果我没有遗漏某些东西,你可以采取行动:
<p:commandButton value="Buscar"
action="#{documentoBuscadorBean.lazyModel.load(0,10,...)}"
process="@form"
update="frmCli:panelResultadosDoc"/>
最好添加无参数版本的加载,这样就不会在视图中混合使用逻辑。如果由于某种原因你不能使用EL 2.2,这甚至是强制性的(我强烈推荐EL 2.2,为你节省了很多丑陋的f:param处理)。
答案 1 :(得分:0)
#{varDocBean.documento.id}
是什么意思? varDocBean
是DocumentoBean
- 所以documento
是DocumentoBean的属性吗?
另外,commandButton什么都不做?我只看到一个commandButton但没有操作方法。
您应该在Primefaces实验室展示中lazy dataTable
查看(再次):http://www.primefaces.org/showcase-labs/ui/datatableLazy.jsf