0

タイトルが難解すぎないことを願っています...

私たちが抱えている問題は、いくつかの Java List から一連の入力コントロール ( など) を生成することh:inputOneMenuですh:inputText

これらの入力がオンザフライで検証されるという要件を除いて、正常に機能します。a4j:outputPanel繰り返しますが、コントロールがループで生成されたため、可能な唯一の reRender アクションは、基本的にフォーム全体または基本的に同じことである各ループ反復の周りであることを除いて、それほど難しくありません。

上記の 2 つの解決策は技術的には機能しますが、すべてのページ コントロールを再レンダリングするという厄介な副作用があり、ページが非常にぎくしゃくしてぎこちなく感じられます。これが起こらないようにしたいので、理想的には reRendered される唯一のコントロールは ajax update/validation を送信するコントロールです。

基本的に、これは私たちのページコードです:

<ui:repeat value="#{seam-outjected-list}" var="item">
   <a4j:outputPanel selfRendered="true">
      <h:inputText value=#{item.value}>
         <a4j:support event="onblur" ajaxSingle="true" />
      </h:inputText>
   </a4j:outputPanel>
</ui:repeat>

アイテムに応じて異なるコントロールをレンダリングするだけのものを少し省略しました。

ご覧のとおり、現在このa4j:outputPanelソリューションを使用しているため、ループで生成されたコントロールが更新されるたびに、すべてのコントロールが再レンダリングされます。

誰かが考えている場合は、事前に感謝します。

4

1 に答える 1

1

私の最初の考えは、をに置き換えて、属性を利用して特定の行のみを再レンダリングする必要があるという<ui:repeat>こと<a4j:repeat>ですajaxKeys

Richfaces ドキュメントから:

このコンポーネントと他のライブラリの反復コンポーネントとの主な違いは、特別な「ajaxKeys」属性です。この属性は、Ajax リクエスト後に更新される行キーを定義します。その結果、ページ全体を更新することなく、いくつかの子コンポーネントを個別に更新することが容易になります。

于 2009-07-21T10:06:14.550 に答える