2015-09-22 73 views
0

我有一個dataTable和LazyDataModel一起工作得很好。它有一個命令按鈕,爲每一行打開一個報告:p:commandButton在數據表中使用lazyload不能在第二頁上工作

在第一頁上它工作正常,但當我頁面更改(例如,轉到第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> 

在第二頁,而不是打開報告,它只是給出了JSF頁面新_blank頁的第1本報告沒」 t顯示。

有人可以幫助我嗎? 在此先感謝。

+2

在'p禁用AJAX:commandButton',然後加上一個'F:ajax'。那是我見過的最奇怪的建築之一。爲什麼?請閱讀[問]並創建一個正常的示例和[mcve]格式(另請參閱http://www.stackoverflow.com/tags/jsf/info – Kukeltje

回答

-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> 
+0

爲什麼?這樣做的優點或原因是什麼?請參閱我的評論在問題中的構造是奇怪的 – Kukeltje

+0

所以你可以使用數據表的第一個屬性來修復你當前的數字頁面,因爲在第二頁上commandButton不能重新發送表單 – Red1

+0

我沒有明白你的意思......完全是這樣的,你在代碼中也有相同的奇怪現象(不是由**任何人使用**)構造,在列中嵌入一個表單使它變得更加怪異,我從未見過任何人使用它這樣 – Kukeltje

-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()); 


    } ` 
+0

嗨,這是我再次...只是代碼沒有任何'解釋'爲什麼這是asnwer不是一個好的答案。請改善它。 – Kukeltje

相關問題