在分页时将附加参数传递给 LazyDataModel 加载方法

Pass additional parameters to the LazyDataModel load method on pagination

我想在单击分页器按钮时传递附加参数。数据如下所示:

<p:dataGrid 
    var="citem" 
      value="#{group.lazyItemGroup}"
      paginator="true" 
      rows="4"
      lazy="true"
        columns="2"
        layout="grid"
        id="items"
        paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
        rowsPerPageTemplate="6,12,16"
>
    ...
    ...
    ...
</p:dataGrid>

我可以使用这样的东西吗?

<p:inputText id="id" value="#{group.id}" type="hidden" />
or
<f:attribute name="id" value="#{group.id}" />

如果您指的是您已实现的 LazyDataModelload 方法,那么不,您不能简单地向该方法添加参数。

既然你在谈论 "when a paginator button is clicked",我假设你有一个 page 事件监听器。显然你还没有,所以将其添加到你的 p:dataGrid:

<p:dataGrid ...>
  <p:ajax event="page"
          listener="#{yourBean.yourListener}"/>
</p:dataGrid>

还有你的豆子:

public void yourListener(PageEvent event) {
  ...
}

在您的侦听器中,您可以将任何内容传递给您的自定义惰性数据模型实例,并在 load 方法中选择它。您还可以向数据网格组件添加一个 <f:attribute .../>,它可以在侦听器方法中读取(请参阅 )。

请注意,您可以从页面事件中获取页面:

event.getPage();

这可能有助于确定要设置的附加数据。