ajaxを使用した検索フォームがあります。keyup
検索フィールドのイベント中searchKeyFieldId
に、同じパネル グリッド内の他のすべてのフィールドを更新する必要があります。
<h:panelGrid id="myGrid" columns="4" >
<!-- When searchKeyFieldId change ... -->
<!-- Need to render all the myGrid EXCEPT searchKeyFieldId -->
<h:outputText value="search key"/>
<h:inputText id="searchKeyFieldId"
value="#{MyController.searchKeyField}"
valueChangeListener="#{MyController.licenseNumberChange}" >
<a4j:ajax event="keyup" render="myGrid" />
</h:inputText>
<h:outputText value=""/>
<h:outputText value=""/>
<!-- Target render fields -->
<h:outputText value="text1"/>
<h:inputText id="field1"
value="#{MyController.field1}"/>
<h:outputText value="text2"/>
<h:inputText id="field2"
value="#{MyController.field2}"/>
<h:outputText value="text3"/>
<h:inputText id="field3"
value="#{MyController.field3}"/>
.....
</h:panelGrid>
ただし、 を使用するrender="myGrid"
と、検索フィールドも更新されるため、フォーカスが失われます。入力を続けるには、エンドユーザーが入力フィールドをもう一度クリック/フォーカスする必要があります。
したがって、次のように特定のフィールドのみを更新する必要があります。
<a4j:ajax event="keyup" render="field1 field2 field3 field4 field5 ..." />
ただし、私には多くのフィールドがあり、正確には40個あります。このソリューションは適切な方法ではありません。