Jsf p:commandButton不';t在dataTable中使用lazyload在第二页上工作
我有一个数据表与LazyDataModel配合得很好。它有一个commandButton,用于打开每行的报告: 在第一页上,它可以正常工作,但当我更改页面(例如,转到第2页)时,commandButton忽略了控件 报告应在新页面中打开 命令按钮的来源:Jsf p:commandButton不';t在dataTable中使用lazyload在第二页上工作,jsf,primefaces,datatable,Jsf,Primefaces,Datatable,我有一个数据表与LazyDataModel配合得很好。它有一个commandButton,用于打开每行的报告: 在第一页上,它可以正常工作,但当我更改页面(例如,转到第2页)时,commandButton忽略了控件 报告应在新页面中打开 命令按钮的来源: <p:column style="width:30px; text-align:center;" headerText="Texto"> <p:commandButton action="#{bean.print}" imme
<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页面的空白页面。报告没有显示
有人能帮我吗?
提前感谢。将表单组件添加到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>
在
p:commandButton
上禁用ajax,然后添加f:ajax
。这是我见过的最奇怪的建筑之一。为什么?请阅读并创建一个普通示例,格式为(另请参见原因?这样做的好处或原因是什么?请参见我对问题的评论。问题中的结构一开始就很奇怪。因此,您可以使用datatable的第一个属性来修复当前的数字页。因为在第二页上,commandButton无法记住表单。我无法完全理解您的意思。y你的代码中有相同的奇怪结构(没有人使用)。在列中嵌入表单会让它更奇怪。我从未见过有人这样使用它。我正在尝试帮助你。对于“表单”,你不能将它放在你想要的地方。检查所有属性数据表,我们会找到一个名为“first”的属性并使用它。不,你不能把表单放在你想要的任何地方。这是有限制的。例如表单不能嵌套,所以如果数据表需要在表单中(用于有大量输入)或者,如果输入需要在表单中进行过滤,则在列中添加其他表单无法工作…嗨,又是我…只需编写代码而不解释为什么是asnwer不是一个好答案。请改进它。
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());
} `