我正在使用RichFaces 3.3。x和战斧。我有一个输入字段,它有a4j:对onkeyup的支持,我使用"process"来更新支持bean。之后,我使用"渲染"来获得我的支持bean(新)创建的div。不幸的是,会话作用域bean创建div的getter不被调用!我该怎么办?
<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}" />
首先,您放入a4j:支持渲染的id是"resultsDiv",这与"results" id不同。如果这不是问题的根源,请尝试将要在ajax中更新的区域放入ajax渲染的outputPanel中,例如:
<a4j:outputPanel id="resultsDiv" ajaxRendered="true" >
<t:div id="results" binding="#{bean.resultsDiv}" />
</a4j:outputPanel>
当然在a4j的renderer值中使用outputPanel的id:support
除了上面代码中的错误id外,我遇到了同样的问题。我使用了一个rich:tree和renderer属性来渲染一个动态生成的div组件。这根本行不通。如果你使用rich:panel而不是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组件虽然。