タイトルが難解すぎないことを願っています...
私たちが抱えている問題は、いくつかの 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
ソリューションを使用しているため、ループで生成されたコントロールが更新されるたびに、すべてのコントロールが再レンダリングされます。
誰かが考えている場合は、事前に感謝します。