2014-10-27 71 views
0

我有一個數據表與自定義刪除按鈕,當我嘗試將選定行的id發送到後臺bean,但我總是得到相同的值,這是我的代碼:primefaces數據表選擇行總是相同的值

<p:dataTable id="result" var="service" value="#{bean.services}" editable="true"> 
<!-- ajax --> 
<p:ajax event="rowEdit" listener="#{bean.onEdit}" update=":form:msg" /> 
<p:ajax event="rowEditCancel" listener="#{bean.onCancel}" update=":form:msg" /> 
..... 
<p:column headerText="delete" style="width:100px;"> 
<p:confirmDialog id="confirmation" message="are u sure?" header="delete item" widgetVar="confirmation" showEffect="fade" hideEffect="explode"> 
<p:commandButton value="Yes" onclick="PF('confirmation').hide()" actionListener="#{bean.onDeleteRow}"> 
<f:setPropertyActionListener target="#{bean.cve}" value="#{service.id.cve}" /> 
</p:commandButton> 
<p:commandButton value="No" onclick="PF('confirmation').hide()" type="button" /> 
</p:confirmDialog> 
<p:commandLink id="deleteLink" onclick="PF('confirmation').show()" styleClass="ui-icon ui-icon-trash"/>        
</p:column> 
</p:dataTable> 

這裏是烘焙豆代碼:

@ManagedBean 
@ViewScoped 
@SuppressWarnings("serial") 
public class Bean implements Serializable{ 

private String cve; 

... 

public void setcve(String cve) { 
    this.cve = cve; 
} 

....  

public void onDeleteRow(){ 

try { 
System.out.println("delete-->" + this.cve); 
} catch (Exception e) { 
e.printStackTrace(); 
} 

} 

} 

在標籤,你可以看到我送的參數值,但我總是留下的數據表中的最後一個值...

我在做什麼錯了?

非常感謝您的支持

回答

1

還有就是在你的代碼中的另一個問題,你和對話框中的數據表的每一行,它是一個糟糕的主意......你應該保持在該行的按鈕並設置要刪除時,點擊此按鈕,後者只顯示對話框,這只是其中的一個......像這樣的實體:也行,propertyAcionListener更改爲您刪除鏈接

<p:commandLink id="delete_link" oncomplete="deleteDlg.show();"> 
    Delete 
    <f:setPropertyActionListener value="#{service.id.cve}" target="#{bean.cve}" /> 
</p:commandLink> 
+0

發生什麼事,是一個複合鍵(和IM與JPA2工作後端),所以我得到的價值是這樣的,問題是,每次你選擇不同的行時,service.id.cve的值總是相同的,我不知道爲什麼:(非常感謝你 – Mariah 2014-10-27 18:59:06

+0

@Mariah將setPropertyActionListener移動到您的 2014-10-27 19:00:50

+1

非常感謝! !有效!! ü拯救我的一天! :) U're令人驚訝 – Mariah 2014-10-27 19:24:15

0

在哪裏數據表的選擇?

你的XHTML

<p:dataTable id="result" var="service" value="#{bean.services}" editable="true"> 

必須是XHTML

<p:dataTable id="result" var="service" value="#{bean.services}" selection="#{bean.selected}" editable="true"> 

你可以找到數據表中選擇例如here

+0

在這種情況下,我沒有選擇,因爲我想只作爲參數傳遞id我需要,而不是整個對象,無論如何採取了你的意見,並做到了這一點: ....併爲後臺bean:private Service selectedService ; - 用setter和getter,但是當我想要訪問它時是null ... – Mariah 2014-10-27 19:06:57