我正在使用 RichFaces 并希望在我的网站上实现实时搜索。我有一个输入字段和一个在我的支持 bean 中动态构建的 div。实际上,方法 bean.getResultsDiv() 调用 setResultsDiv() 并考虑到 searchString 创建 MyFaces Div 对象。不幸的是,如果我在输入字段中键入一个字符,结果 div 的重新呈现发生得太早,并且搜索字符串将不会更新。如何确保首先处理 char,然后触发创建新结果 div 的 bean 方法?提前致谢。
<t:inputText id="mysearchString"
value="#{bean.searchString}"
onkeydown="jQuery('form_processSearchString').click();"
/>
<4j:commandButton id="processSearchString"
process="mysearchString"
reRender="results"
/>
<t:div id="results" binding="#{bean.resultsDiv}" />
UPDATE-1:我进行了调试,现在我可以看到 bean.searchString 已正确更新。不幸的是,getResultsDiv() 的 getter 方法在 setSearchString(newStringToSeach) 之前调用。如何确保先进行处理,然后再进行重新渲染。
我正在玩的另一个代码片段(相同的行为,在 setSearchString() 之前触发了 rerendering-getter-call):
<t:inputText id="searchString"
value="#{beans.searchString}"
onkeydown="if (event.keyCode == 13) { return false; }">
<a4j:support event="onkeyup" requestDelay="200" ajaxSingle="true"
reRender="resultsDiv" eventsQueue="quicksearchqueue"
ignoreDupResponses="true"
process="searchString"
/>
</t:inputText>
感谢帮助!
UPDATE-2:我发现相应绑定的 getter 根本没有被触发,因此 div 没有机会更新。这似乎是个问题!
<t:div id="results" binding="#{bean.resultsDiv}" />