Генерация уникальных атрибутов идентификатора в datatable с JSF2 и IceFaces2 - PullRequest
0 голосов
/ 09 декабря 2011

Я пытаюсь использовать код, который выглядит следующим образом:

<ice:dataTable id="revisionDocuments" value="#{agendaBean.agenda.revisionsDocuments}" var="revision">
    <ice:column>
        <ice:inputText value="#{revision.sequenceAdresse}" id="revisionSequenceAdresse#{revision.index}" />
    </ice:column>

Я хотел бы иметь другой идентификатор для моих полей формы. Объект ревизии содержит поле «индекс», представляющее индекс объекта в списке. Я хочу видеть, что это появляется в id. Однако ничего не происходит. Выражение # {revision.index} никогда не интерпретируется (getIndex () для объекта ревизии никогда не вызывается).

Вы скажете мне, JSF уже делает что-то похожее на:

revisionDocuments:0:revisionSequenceAdresse
revisionDocuments:1:revisionSequenceAdresse
revisionDocuments:2:revisionSequenceAdresse

Верно, но это влияет только на clientId, сгенерированный в HTML. UIComponent, представляющий поля формы (в ViewRoot от FacesContext), имеет все те же «id» И «clientId» (да, событие, если HTML содержит «revisionDocuments: 0: revisionSequenceAdresse», «clientId», который вы найдете в ViewRoot, revisionDocuments: revisionSequenceAdresse)

.

Кто-нибудь может помочь с моей попыткой?

Большое спасибо, любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 09 декабря 2011

Идентификаторы компонентов должны быть определены во время построения представления, а не во время визуализации представления.#{revision} недоступен во время построения представления, поэтому он всегда оценивается как пустой.По сути, вам нужно привязать его к #{agendaBean} или к чему-то еще, что уже находится в области видимости во время сборки представления.Идентификатор компонента зависит от самого компонента, а не от его сгенерированного вывода HTML.Вы не можете назначить несколько разных идентификаторов физически одному и тому же компоненту.

Но на самом деле вам не нужно возиться с этим подходом.Ваша конкретная проблема, для которой вы думали, что это решение, уже дана в вашем предыдущем вопросе: JSF2 + IceFaces 2 - Получить UIComponent из ViewRoot .

...