我在使用監聽器的ajax標籤來調用託管bean中的方法時遇到問題。以下代碼不起作用。雖然ajax調用JavaScript方法view.show()
,但它不會在偵聽器屬性中調用managedbean方法。如何使用JSF(Primefaces)ajax Listener?
<p:dataTable id="dataTable" var="customersFeedback"
value="#{customersFeedbackController.allReadFeedbacks}"
widgetVar="reservationTable"
selectionMode="single"
selection="#{customersFeedbackController.customersFeedback}"
rowKey="#{customersFeedback.id}">
<p:ajax event="rowSelect" update=":viewFeedbackForm:viewDlg" listener="#
{customersFeedbackController.setMessageAsRead()}" oncomplete="view.show()"/>
</p:dataTable>
這是我的managedbean。更新方法只是更新數據庫中的CustomerFeedback對象的一種方法。
@ManagedBean(name = "customersFeedbackController")
public class CustomersFeedbackController implements Controller<CustomersFeedback> {
private CustomersFeedback customersFeedback = new CustomersFeedback();
// other fields here
@Override
public void update() {
customersFeedbackDao.update(customersFeedback);
}
public void setMessageAsRead() {
customersFeedback.setStatus("Read");
this.update();
System.out.println("Method Executed"); // Just a test
}
// Other methods here
}
我做錯了什麼?如果有的話,請隨時糾正我。謝謝。
你必須在你的bean函數中傳遞一個事件參數,試着這樣做,讓我知道 – Anas
仍然沒有工作 – steven0529
@anas -that不正確;在事件監聽器中傳遞參數並不是強制性的。 – kolossus