我有一个使用 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 个,这种解决方案不是一个好习惯。