Прежде всего, внимательно прочитайте: JSTL in JSF2 Facelets... makes sense?
Сокращенная, EL выражения в id
атрибуты вычисляются во время вид сборки. В вашем конкретном случае, основываясь на симптомах, #{cc.attrs.pubId}
, по-видимому, доступен только во время просмотра рендеринга, например, потому что он определен var
итерационного компонента JSF UI или потому, что он определен как свойство bean, которое устанавливается после сборки вида время и т. д.
Вам нужно обратиться к другому решению. Я не могу сказать это подробно, поскольку вы ничего не сказали о конкретном функциональном требовании, для которого вы считали, что это решение. Но, к точке, у Вас есть 2 варианта:
Убедитесь, что любые переменные EL в id
(и binding
) атрибута доступны во время вид сборки. Например, используйте <c:forEach>
вместо <ui:repeat>
.
Поместите его на простой элемент HTML. Он оценивается во время просмотра рендеринга.
<rich:popupPanel id="popupEditor">
<div id="#{cc.attrs.pubId}">
...
</div>
</rich:popupPanel>
Или, возможно, вам не нужно вообще, и вы просто overthought решение, фактически не имея конкретную проблему. Когда ваши композиты разработаны правильно, у вас должно быть нет необходимости для динамического ID внутри композитного.
<rich:popupPanel id="popupEditor">
...
</rich:popupPanel>
JSF уже заботится о ней автоматически, как составные компоненты по своей сути простираться от NamingContainer
. Вам просто нужно указать <my:composite>
сам фиксированный идентификатор.
Вы пробовали поместить его внутри ''? (Или , то, что должно содержать текст) –
Makhiel
В будущем перед тем, как вы сделаете несколько сильных утверждений, указывающих на конкретного подозреваемого, основанного на поспешных сделанных наблюдениях («это не работает в компонентах RichFaces»), пожалуйста, исключите его сначала из являясь причиной, заменив '' напр. '<Ч: panelGroup>'. Заявление в вашем названии совершенно неверно. –
BalusC