Я получил простую настройку (и большую проблему): страница JSP с пустым контейнером элемента сетки панели и привязкой к бину.
<h:panelGrid binding="#{ bean.container }" id="container" />
Когда будет вызван метод получения бинаКонтейнер заполнен случайным числом столбцов с внутренней ссылкой.Все идет нормально.Контейнер заполнен нужным количеством элементов, и с помощью ActionListener по ссылкам я получаю все события щелчков.
Здесь начинается сложная часть: я хочу отметить «выбранный» или«нажата» колонка через другой класс стиля.При статической настройке я бы сделал это с помощью выражения:
<h:column styleClass="#{ bean.selectedColumn eq 'id' ? 'btnSelected' : 'btn' }">
<!-- command link and some blahblah -->
</h:column>
Бин содержит простой метод получения getSelectedColumn()
, который возвращает идентификатор.Прямо вперед, так что это прекрасно работает!
Но когда я пытаюсь сделать то же самое внутри компонента ,
ELContext elContext = FacesContext.getCurrentInstance().getELContext();
String expression = "#{ bean.selectedColumn eq 'id' ? 'btnSelected' : 'btn' }";
new ExpressionFactoryImpl().createValueExpression(elContext, expression, String.class);
column.setValueExpression("styleClass", valueExpression);
, выражение никогда не будет разрешено.Чтобы было понятно: обе ссылки на команды, столбцы и выражения значения генерируются внутри компонента .Это причина?
Может кто-нибудь сказать мне, почему?Заранее спасибо!