0

RichFaces 3.3.x と Tomahawk を使用しています。onkeyup で a4j:support を持つ入力フィールドがあり、「プロセス」を使用してバッキング Bean を更新しています。その後、「reRender」を使用して、(新しく) 作成された div のバッキング Bean を取得します。残念ながら、Div で作成されたセッション スコープ Bean のゲッターは呼び出されません。私は何をすべきか?

<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

まず、a4j:support to reRender に入れる ID は "resultsDiv" であり、これは の "results" id とは異なります。これが問題の原因でない場合は、更新する領域を ajax レンダリングされた outputPanel 内の ajax 内に配置してみてください。例:

<a4j:outputPanel id="resultsDiv" ajaxRendered="true" >
  <t:div id="results" binding="#{bean.resultsDiv}" />
</a4j:outputPanel>

もちろん、a4j:support の reRender 値で outputPanel の ID を使用します。

于 2013-03-14T13:12:41.680 に答える
0

上記のコードの間違った ID を除いて、同じ問題がありました。rich:tree と reRender 属性を使用して、動的に生成された div コンポーネントを再レンダリングしました。それは単に機能しませんでした。div コンポーネントの代わりに rich:panel を使用すると、問題なく動作します。

<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 に答える