我在使用监听器的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