p:commandButton在dataTable中使用lazyload在第二页上不起作用

时间:2015-09-22 14:29:44

标签: jsf primefaces datatable

我有一个dataTable与LazyDataModel配合得很好。它有一个commandButton,它为每一行打开一个报告:

在第一页上它工作正常,但是当我更改页面时(例如,转到第2页),commandButton错过了控件。

报告应在新页面中打开。

命令来源按钮:

<p:column style="width:30px; text-align:center;" headerText="Texto">
<p:commandButton action="#{bean.print}" immediate="true"
    title="View report" ajax="false" onclick="this.form.target='_blank'">           
    <f:ajax event="click" execute="@form"></f:ajax>                         
    <f:setPropertyActionListener value="#{obj}" target="#{bean.myObject}"/>                         
</p:commandButton>

在第二页而不是打开报告时,它只是在页面1中提供了一个带有jsf页面的新_blank页面。报告未显示。

有人可以帮帮我吗? 提前谢谢。

2 个答案:

答案 0 :(得分:-1)

将表单组件添加到commandButton

<p:column style="width:30px; text-align:center;" headerText="Texto">
<h:form>
<p:commandButton action="#{bean.print}" immediate="true"
    title="View report" ajax="false" onclick="this.form.target='_blank'">           
    <f:ajax event="click" execute="@form"></f:ajax>                         
    <f:setPropertyActionListener value="#{obj}" target="#{bean.myObject}"/>                         
</p:commandButton>
</h:form>
</p:column>

答案 1 :(得分:-1)

<p:dataTable id="dtform" widgetVar="dtform"
value="#{managedBeans.lazyModel}" var="form" paginator="true" emptyMessage="#{message.ListeVide}"
rows="10" rowKey="#{form.id}" paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" paginatorPosition="bottom" paginatorAlwaysVisible="true" selectionMode="single"
first="#{managedBeans.first}" lazy="true" > <p:ajax event="page" process="@this" listener="#{managedBeans.onPageChange}" />

    protected int first=0;
    public int getFirst() {  
       return first;  
  }  
  public void setFirst(int first) {  
       this.first = first;  
  }  
  public void onPageChange(PageEvent event) {  
       this.setFirst(((DataTable) event.getSource()).getFirst());  


  }  `