0

我正在使用 RichFaces 3.3.x 和 Tomahawk。我有一个在 onkeyup 上有 a4j:support 的输入字段,我正在使用“进程”来更新支持 bean。之后,我使用“reRender”来获取我的支持 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}" />
4

2 回答 2

0

除了上面代码中的错误ID,我遇到了同样的问题。我使用 rich:tree 和 reRender 属性来重新渲染动态生成的 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 组件一起使用。对此的任何回答将不胜感激。

于 2013-07-12T07:00:27.737 回答
0

首先,您在 a4j:support 中放入 reRender 的 id 是“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

于 2013-03-14T13:12:41.680 回答