Среда: JSF 2.0 / JPA (предоставлено EclipseLink) / Glassfish 3.1 / java-EE-5 /
Небольшое веб-приложение JSF (без пружины, без EJB, без CDI) в основном предназначено для отображения таблиц данных для сущностей, но цель состоит в том, чтобы отобразить список образов сущностей для данного Writer:
Таблица данных (<h:datatable/>
) отображает список авторов.
- Таблица данных (
<h:datatable/>
) отображает список книг, написанных авторами. (1 - *)
- Таблица данных (
<h:datatable/>
) отображает список оценок, предоставленных авторам. (1 - *)
- Таблица данных (
<h:datatable/>
) отображает список тем, рассматриваемых авторами. (1 - *)
Вот как я вижу вещи:
Поскольку все таблицы данных имеют столбец с идентификатором Writer (первичный ключ Writer).
Как я могу добиться, чтобы текущий сеанс пользователя содержал параметр (идентификатор записывающего устройства), когда пользователь выбирает заданного записывающего устройства (предпочтительно из источника данных записывающего устройства) и использует его для отображения только записей, относящихся к этой выбранной строке записывающего устройства.
Точно так же, когда пользователь завершает работу с выбранным писателем, он / она может сбросить сеанс для хранения другого идентификатора писателя и счастливо исследовать дочерние элементы нового выбранного писателя.
Другими словами, используя <h:datatables />
и <f:param />
(или что-то подобное), как я могу постоянно отображать элементы Book, Evaluation и Topic для выбранного автора.
E.G: Постоянно для меня означает = Когда пользователь выбирает писателя из таблицы данных и переходит на страницу /book/List.xhtml
, книга данных должна содержать список только тех элементов книги, которые есть у выбранного писателя. И если пользователь переходит в другое место, он может видеть только то, что связано с тем же автором.
Одна из идей состоит в том, чтобы использовать фильтры данных OpenFaces, но для конечного пользователя слишком жестоко фильтровать таблицу каждый раз, когда он / она переходит на страницу. Он должен сделать это только один раз.
(Интересным решением является добавление фильтра OpenFaces (<o:inputTextFilter />
) для каждого объекта данных (в данном случае <o:datatable >
), и тогда все фильтры для всех таблиц автоматически получают идентификатор записывающего устройства, который хранится в качестве параметра пользовательский сеанс во время цикла JSF. Но возможно ли это :(?
Извините за избыточность. Надеюсь, что кто-то может помочь с подсказками, идеями, решениями или лучшей альтернативой.
С уважением.