Среда: JSF 2.0 / JPA (предоставляется EclipseLink) / Glassfish 3.1 / java-EE-5 /
Небольшое веб-приложение JSF (без Spring, без EJB, без CDI) состоит в основном из отображения таблиц данных для сущностей, но цель состоит в том, чтобы отобразить список элементов сущностей для данного Writer:
Таблица данных (
<h:datatable/>
) отображает список писателей.- Таблица данных (
<h:datatable/>
) отображает список книг, написанных писателями. (1--*) - Таблица данных (
<h:datatable/>
) отображает список оценок, выставленных писателям. (1--*) - Таблица данных (
<h:datatable/>
) отображает список тем, обработанных писателями. (1--*).
Вот как я это вижу:
Поскольку во всех таблицах данных есть столбец с идентификатором Writer (первичный ключ Writer). Как я могу сообщить текущему пользовательскому сеансу, чтобы он содержал параметр (идентификатор писателя), когда пользователь выбирает данного писателя (предпочтительно из таблицы данных Writer) и использует его для отображения только записей, связанных с этой выбранной строкой писателя.
Таким же образом, когда пользователь закончит работу с выбранным модулем записи, он/она может сбросить сеанс, чтобы сохранить идентификатор другого модуля записи и с удовольствием изучить новые выбранные дочерние элементы модуля записи.
Другими словами, используя <h:datatables />
и <f:param />
(или что-то подобное), как я могу постоянно перечислять элементы «Книга», «Оценка» и «Тема» для выбранного писателя.
Например: «Настойчиво» для меня означает = Когда пользователь выбирает автора из таблицы данных и переходит на /book/List.xhtml
страницу, в таблице данных книги должны быть перечислены только элементы книги, которые есть у выбранного писателя. И если пользователь переходит в другое место, он может видеть только то, что связано с тем же автором.
Одна из идей состоит в том, чтобы использовать фильтры данных OpenFaces, но для конечного пользователя слишком жестоко фильтровать таблицу каждый раз, когда он/она переходит на страницу. Он должен сделать это только один раз. (Интересное решение состоит в том, чтобы добавить фильтр OpenFaces (<o:inputTextFilter />
) для каждой таблицы данных (в данном случае <o:datatable >
), а затем все фильтры для всех таблиц автоматически получат идентификатор записи, хранящийся в качестве параметра сеанса пользователя во время цикл JSF. Но действительно ли это возможно :( ?
Извините за избыточность. Надеюсь, кто-то может помочь с подсказками, идеями, решениями или лучшей альтернативой. С Уважением.
web.xml
? GF 3 поддерживает Servlet 3.0, а также EL 2.2, что должно упростить передачу аргументов. - person BalusC   schedule 16.06.2011