我正在使用RichFaces 3.3.x和Tomahawk。我有一个输入字段,它具有a4j:onkeyup上的支持,我使用'process'来更新支持bean。之后我使用'reRender'来获得我的支持bean(刚刚创建)div。不幸的是,会话scoped bean的getter创建了Div不被调用!我该怎么办?
<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>
<t:div id="results" binding="#{bean.resultsDiv}" />
答案 0 :(得分:0)
首先,你在a4j中添加的id:对reRender的支持是“resultsDiv”,它与“results”id不同。 如果这不是问题的根源,请尝试将ajax中要更新的区域放在ajax渲染的outputPanel中,例如:
<a4j:outputPanel id="resultsDiv" ajaxRendered="true" >
<t:div id="results" binding="#{bean.resultsDiv}" />
</a4j:outputPanel>
当然在a4j的reRender值中使用outputPanel的id:support
答案 1 :(得分:0)
除了上面代码中的错误ID,我遇到了同样的问题。我使用了rich:tree和reRender属性来重新渲染动态生成的div组件。它根本不起作用。如果您使用rich:面板而不是div组件,它将正常工作:
<t:inputText id="searchString"
value="#{beans.searchString}"
onkeydown="if (event.keyCode == 13) { return false; }">
<a4j:support event="onkeyup" requestDelay="200" ajaxSingle="true"
reRender="results" eventsQueue="quicksearchqueue"
ignoreDupResponses="true"
process="searchString"
/>
</t:inputText>
<rich:panel id="results" binding="#{bean.yourPanel}" />
在辅助bean中,您将生成的div作为子项放入富面板组件,如下所示:
yourPanel.getChildren().add(yourGeneratedDiv);
我不知道为什么它不适用于t:div组件。任何答案都将不胜感激。