我有一个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页面。报告未显示。
有人可以帮帮我吗? 提前谢谢。答案 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());
} `