Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf p:commandButton不';t在dataTable中使用lazyload在第二页上工作_Jsf_Primefaces_Datatable - Fatal编程技术网

Jsf p:commandButton不';t在dataTable中使用lazyload在第二页上工作

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

我有一个数据表与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页面的空白页面。报告没有显示

有人能帮我吗?
提前感谢。

将表单组件添加到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());  


  }  `