0

我使用自定义转换器为 h:dataTable 中的单元格构建 ah:inputText。如果我重新渲染整个表格,可以转换输入文本并且可以显示转换后的文本。

问题是,整个表格的重新渲染会释放下一个输入框的焦点。我试着解释清楚。

我遇到的问题:

  1. 用户在表格单元格中输入数据。
  2. 用户按 Tab 键并跳转到表格中的下一个输入框。
  3. 同时,刚刚输入的文字会立即转换并显示出来。
  4. 但是由于整个表格的重新渲染,用户失去了下一个输入框的焦点。

我想要的是:

  1. 用户在表格单元格中输入数据。
  2. 用户按 Tab 键并跳转到表格中的下一个输入框。
  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>

执行属性应该触发转换器。这样,您不需要单独的 outputText 。

于 2011-02-18T10:17:46.813 回答