Динамические веб-страницы с JSF - PullRequest
1 голос
/ 27 апреля 2011

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

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

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

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

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

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

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

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

1 Ответ

2 голосов
/ 29 апреля 2011

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

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

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

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

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

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

...