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が(目に見えて)自分自身を更新するので、レンダリングはうまくいくようです。
リスナーが呼び出されない理由は誰にもわかりますか?