0

カスタマイズされたコンバーターを使用して、h:dataTable のセルに ah:inputText を作成します。テーブル全体を再レンダリングすると、入力テキストを変換でき、変換されたテキストを表示できます。

問題は、テーブル全体を再表示すると、次の入力ボックスのフォーカスが解放されることです。わかりやすく説明するようにしています。

私が抱えている問題:

  1. テーブル セル内のユーザー入力データ。
  2. ユーザーがタブ キーを押して、テーブル内の次の入力ボックスにジャンプします。
  3. 一方、入力したテキストはすぐに変換されて表示されます。
  4. しかし、テーブル全体が再レンダリングされるため、ユーザーは次の入力ボックスのフォーカスを失いました。

私が欲しいのは:

  1. テーブル セル内のユーザー入力データ。
  2. ユーザーがタブ キーを押して、テーブル内の次の入力ボックスにジャンプします。
  3. 一方、入力したテキストはすぐに変換して表示する必要があります。
  4. ユーザーは、次の入力ボックスのフォーカスを失うべきではありません (おそらく、部分的な再レンダリングを使用します)。

また、部分的な再レンダリングのためにすべてのセルに id を割り当てようとしていますが、dataTable でこれを行う方法がわかりません。

誰でも問題を解決するための解決策を持っていますか? ありがとう。

4

2 に答える 2

1

の属性でid出力コンポーネントの を参照するだけです。renderf:ajax

<h:dataTable value="#{bean.model}" var="item">
    <h:column>
        <h:inputText value="#{item.value}">
            <f:ajax event="blur" render="output" />
        </h:inputText>
    </h:column>
    <h:column>
        <h:outputText id="output" value="#{item.value}" />
    </h:column>
</h:dataTable>
于 2011-02-17T13:57:49.043 に答える
0

これを試して:

<h:inputText value="#{item.value}">
  <f:ajax event="blur" render="@this" execute="@this"/>
</h:inputText>

execute 属性は、コンバーターをトリガーする必要があります。このように個別の outputText は必要ありません。

于 2011-02-18T10:17:46.813 に答える