在调用rerender事件后,动态创建的Div没有得到更新

时间:2013-03-14 11:10:40

标签: jsf richfaces tomahawk rerender

我正在使用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}" />

2 个答案:

答案 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组件。任何答案都将不胜感激。