Я абсолютно плохо знаком с JSF и просто попыткой подтверждения концепции, чтобы решить, будет ли это полезно для проекта. Моя POC просто состоит из единственной страницы, с таблицей, содержа некоторые данные.
Число столбцов (а также количество строк) является динамичным, загружается из базы данных, прежде чем страница будет представлена.
Со следующим я получаю два статических столбца с соответствующим количеством строк, как я ожидал бы:
Что я хотел сделать, должен был добавить a
вокруг единственного набора
теги, для итерации по числу столбцов но это не работало - я попробовал множество комбинаций, но я ожидал, что что-то вроде этого будет работать:
От поиска с помощью Google я прочитал различные неопределенные комментарии как, 'это не способ сделать это', но я не смог найти любые особенно востребованные примеры правильного пути. Кто-то упомянул, что создал DataTable в отступающем бобе, но единственный пример которого я мог найти, был http://forums.sun.com/thread.jspa?threadID=577589. Это работало, но чувствовало себя довольно неуклюжим, тем более, что некоторые используемые методы удерживаются от использования.
В данный момент это выглядит маловероятным, что я смогу пользоваться любыми библиотеками кроме базового JSF, но это могло бы измениться, если абсолютно необходимо. Кто-либо может пролить какой-либо свет на правильный способ сделать это? Кажется, что это должно быть довольно просто, таким образом, я уверен, что просто пропускаю что-то очевидное.
JSTL и JSF не работают синхронно, как можно было бы ожидать от кода. Более того, JSTL сначала обрабатывает всю страницу сверху вниз, а затем передает результат в JSF для дальнейшей обработки. # {row}
недоступен в то время, когда JSTL занят, поэтому ваша попытка действительно не сработает.
В связанной теме действительно упоминаются устаревшие методы, но тема также устарела и обсуждает устаревший JSF 1.0 / 1.1. Если вы изучите текущую документацию Javadocs по упомянутым методам, вы увидите, что, как обычно, упоминаются методы замены. Например, Application # createValueBinding ()
упоминает следующее:
Не рекомендуется . Это было заменено вызовом
getExpressionFactory ()
, затемExpressionFactory.createValueExpression (javax.el.ELContext, java.lang.String, java.lang.Class)
.
Вы можете найти некоторые конкретные примеры динамического заполнения данных таким образом в этой статье .
Что касается сторонних библиотек компонентов, RichFaces имеет компонент rich: columns
, который разработан именно для этой цели.