【发布时间】:2013-04-02 07:57:26
【问题描述】:
我有一个使用 ajax 的搜索表单。在搜索字段searchKeyFieldId 的keyup 事件期间,我需要更新同一面板网格中的所有其他字段。
<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 个,这个解决方案不是一个好习惯。
【问题讨论】: