考慮到JSF和AJAX,我有一個問題。 我想在訪問者插入客戶ID後更新一些客戶的詳細信息。f:ajax監聽器不叫
首先,從XHMTL代碼摘錄:
<h:form>
<h:panelGrid columns="2">
<h:panelGrid columns ="2" border="1" id="customer_grid">
<h:outputLabel value="#{mbean_msg.reservation_lblCustomerNo}" for = "customer_id"/>
<h:inputText id = "customer_id" value="#{reservationHandler.customer.customer_id}">
<f:ajax listener="{reservationHandler.autocompleteCustomerDetails}"
render="customer_grid" />
</h:inputText>
<h:outputLabel value="#{mbean_msg.reservation_lblLastname}" for="lastname"/>
<h:inputText id="lastname" value="#{reservationHandler.customer.lastname}" required ="true"
requiredMessage="#{error_msg.errmsgLastname}" validator="#{reservationHandler.validateCustomer}"/>
<h:outputLabel value="#{mbean_msg.reservation_lblFirstname}" for="firstname"/>
<h:inputText id="firstname" value="#{reservationHandler.customer.firstname}" required ="true"
requiredMessage="#{error_msg.errmsgFirstname}" validator="#{reservationHandler.validateCustomer}"/>
偵聽器方法是我的java文件(ReservationHandler.java)內這樣實現的:
public void autocompleteCustomerDetails(){
System.out.println("Auto Complete"); // for testing
}
基本上我試圖調用使用Listener的方法autocompleteCustomerDetails。不幸的是,這種方法從未被調用無論如何,渲染似乎工作得很好,因爲其他inputTexts更新自己(明顯)。
有沒有人有一個想法,爲什麼沒有調用監聽器?
你的'ReservationHandler' bean的範圍是什麼?也嘗試將其簽名更改爲'public void autocompleteCustomerDetails(AjaxBehaviorEvent ev){}' – Daniel
我也在之前使用AjaxBehaviorEvent嘗試過它,它沒有任何區別。我的bean是會話範圍。 – user1924889
它是否適合你,如果你添加'event =「keyup」'到你的'
Daniel