Динамические веб-страницы с JSF

У нас есть огромное (много разных представлений) приложение Java EE, веб-уровень которого передает содержимое DHTML в браузер для создания текущего представления.

Мы используем специальную среду Javascript AJAX для управления стандартизированными событиями компонентов в представлении. Платформа загружается начальным шаблоном страницы, в котором будут размещаться все следующие различные представления.

Мы создали инструмент для «не программистов», который используется для определения веб-представления с точки зрения макета, событий и связанных функций. После определения представления DHTML программно создается и сохраняется в базе данных.

Пользовательский запрос (AJAX) для представления обрабатывается объектом действия, который извлекает содержимое DHTML из БД и отправляет его в браузер, где он будет отображаться внутри шаблона или модального окна.

По разным причинам мы планируем избавиться от фреймворка Javascript и перенести управление событиями представления на серверную сторону.

В поисках подходящей среды Java мы изучили JSF, который, по всей видимости, имеет все необходимые нам функции, кроме той, которая позволяет создавать представление «на лету», как описано выше.

Мы пропустили какую-то функцию JSF или обходной путь?

Если нет, знаете ли вы о каком-либо другом подобном фреймворке, который мы можем адаптировать к нашим потребностям?


person Carlo    schedule 27.04.2011    source источник


Ответы (1)


Вы, безусловно, можете динамически создавать представления в JSF. Не зная подробностей о том, что вы создаете, я не могу предложить лучший подход, но вот несколько способов построить представление на лету:

  • используйте ui:include с атрибутом src, привязанным к свойству управляемого компонента
  • используйте сочетание ui:include и JSTL

Иногда это может быть сложно, потому что, когда вы смешиваете JSTL с тегами JSF, вам нужно узнать, где в жизненном цикле рендеринга будет выполняться каждый тип тега, чтобы заставить его делать то, что вы хотите, но как только вы это узнаете, это самый простой подход.

  • привязать компонент к полю управляемого компонента и манипулировать им на стороне сервера

Я использовал этот подход для динамического создания форм в приложении. Формы будут меняться в зависимости от типа отчета, типа пользователя и очень большого количества других критериев. Я просто привязал компонент JSF сетки панели к полю на стороне сервера, а затем начал создавать дочерние элементы «вручную» (например: выпадающее меню UISelectOne = new UISelectOne();), добавляя их как дочерние элементы в сетку панели ( например: panelgrid.getChildren().add(выпадающий список);) по ходу дела.

Конечно, это не обязательно должна быть панельная сетка, это может быть элемент управления макетом PrimeFaces, в котором вы динамически генерируете дочерние элементы layoutUnit. Дело в том, что любой элемент управления может быть привязан к переменной в управляемом компоненте, и вы можете манипулировать им на стороне сервера на основе любых критериев, которые вы хотите.

person Lawrence McAlpin    schedule 29.04.2011