JSF 1.2 — создание атрибутов динамического идентификатора для таблиц с использованием ‹h:dataTable›

Каков наилучший способ создания атрибутов динамического идентификатора для таблиц (в цикле) с использованием <h:dataTable>?

Мы используем следующее:

  • JSF 1.2
  • JSP
  • Сервер приложений Sun 9.0_01
  • JSTL 1.1

У нас есть страница с 8 таблицами.

Каждая таблица ДОЛЖНА иметь уникальный идентификатор.

Таблицы рисуются путем итерации по карте, которая содержит элементы, содержащие табличные данные.

Ключи Карты следует использовать при определении атрибутов ID таблиц.

Пример:

Если моя карта содержит эти ключи: Dog, Cat, Mouse, Bird

В идеале я хочу, чтобы атрибуты ID моих таблиц были: dog-table, cat-table, mouse-table, bird-table

Что-нибудь случайное тоже сработает: t1-table, t2-table, t3-table

Атрибут ID <h:dataTable> не разрешает выражения EL (поэтому я не могу напрямую обращаться к своим ключам карты).

Как лучше всего создать атрибуты моего идентификатора?

На ум приходят два подхода, но оба они кажутся хакерскими:

  1. использовать скриптлет или выражение значения JSP

  2. используйте jQuery для назначения уникальных идентификаторов каждой таблице (после ее рендеринга и до ее обработки)

Конечная цель — отобразить эти таблицы с помощью jqGrid (поэтому мы все равно используем jQuery).

Любая помощь будет потрясающей...


ПРИМЕЧАНИЕ.

Мы используем вспомогательный класс для симуляции перебора карты (поскольку это невозможно в JSF 1.2).

Вместо фактического повторения карты мы создаем список объектов, у которых есть имя и List<Foo>.

Имя представляет собой ключ, а список представляет собой строки таблицы (таблиц).


Изменить:

В конце концов мне пришло в голову, что <h:dataTable> генерирует свои собственные уникальные идентификаторы в этом сценарии.

Сгенерированные имена достаточно хороши, чтобы решить мою проблему...

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


person jahroy    schedule 04.10.2012    source источник
comment
Является ли (Num of) datatable динамически генерируемым? Если да, то как вы создаете, что предоставляете для этого подробную информацию.   -  person Jubin Patel    schedule 27.12.2012
comment
Может быть, вы можете использовать тег facelets <ui:repeat> вместо <h:dataTable>? Таким образом, вы можете определить идентификаторы для своих тегов HTML <table> вручную.   -  person Uooo    schedule 05.02.2013
comment
@ w4rumy - Боже, как бы мне хотелось, чтобы мы могли переключиться на фейслеты ... К сожалению, я работаю над устаревшей системой с сотнями JSP, которые нельзя так изменить.   -  person jahroy    schedule 05.02.2013


Ответы (1)


Я думаю, это поможет вам...

Все выражения, использующие синтаксис ${}, вычисляются немедленно. Эти выражения можно использовать только в тексте шаблона или в качестве значения атрибута тега, который может принимать выражения времени выполнения.

   id="${data.map}-table
person Bhushankumar Lilapara    schedule 19.04.2013