我在考虑 JSF 和 AJAX 时遇到了问题。在访问者插入客户 ID 后,我正在尝试更新一些客户详细信息。
首先,摘自 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
}
基本上我正在尝试使用侦听器调用方法autocompleteCustomerDetails 。不幸的是,这个方法永远不会被调用。无论如何,渲染似乎工作得很好,因为其他inputTexts更新自己(可见)。
有谁知道,为什么不叫听众?