JSF: inputText с преобразователем в dataTable Проблема - PullRequest
0 голосов
/ 17 февраля 2011

Я строю h: inputText для ячейки в h: dataTable с настраиваемым конвертером. Введенный текст может быть преобразован, и преобразованный текст может быть отображен, если я перерисовываю всю таблицу.

Проблема в том, что перерисовка всей таблицы освободит фокус следующего поля ввода. Я пытаюсь объяснить это ясно.

Проблема, которая у меня есть:

  1. Пользовательские данные в ячейке таблицы.
  2. Пользователь нажимает клавишу табуляции и переходит к следующему полю ввода в таблице.
  3. Между тем только что введенный текст будет преобразован и отображен немедленно.
  4. Но пользователь потерял фокус следующего поля ввода из-за перерисовки всей таблицы.

Что я хочу, это:

  1. Пользовательские данные в ячейке таблицы.
  2. Пользователь нажимает клавишу табуляции и переходит к следующему полю ввода в таблице.
  3. Между тем только что введенный текст должен быть преобразован и отображен немедленно.
  4. Пользователь не должен терять фокус следующего поля ввода (возможно, использовать частичную визуализацию).

Я также пытаюсь назначить идентификатор каждой отдельной ячейке для частичного повторного рендеринга, но я не знаю, как это сделать в dataTable.

У кого-нибудь есть решение проблемы? Спасибо.

Ответы [ 2 ]

1 голос
/ 17 февраля 2011

Просто укажите id компонента вывода в атрибуте render f: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>
0 голосов
/ 18 февраля 2011

Попробуйте это:

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

Атрибут execute должен запустить конвертер.Таким образом, вам не нужен отдельный выходной текст.

...