JSF: каков объем бобов для двухстраничной мастер-детали? - PullRequest
4 голосов
/ 29 февраля 2012

В приложении JSF у меня есть таблица с обобщенными данными.Если меня интересуют подробности, я могу щелкнуть строку и просмотреть подробности на другой странице.Если управляемый бин «главной» страницы представляет собой область просмотра «Ион», он создается заново каждый раз, когда я возвращаюсь со страницы «Подробности», и я не думаю, что будет хорошей идеей, если пользователь должен проверить деталибольше раз.Я могу решить поместить бин в сессию, но бин (и данные) сохраняются в памяти, даже когда пользователь взаимодействует с приложением в совершенно другом разделе.Вероятно, мне понадобится настраиваемая область, но:

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

Спасибо, Филиппо

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012

Если страница сведений должна быть идемпотентной (т. Е. Ее можно перманентно связать, добавить в закладки, можно сканировать с помощью searchbot), просто воспользуйтесь двумя запросами или просмотрите область действия бобов и используйте ссылку GET с идентификатором объекта в качестве параметра запроса для перехода от главной страницы к деталям. стр. См. Также Создание страниц основных данных для сущностей, как их связать и какую область действия бина выбрать для конкретного примера.

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

В части JSF вы не должны слишком беспокоиться о стоимости производительности БД. Скорее настройте и настройте его на постоянном уровне. Например, в JPA вы можете настроить кэш второго уровня. Если у вас более 500 ~ 1000 элементов, рассмотрите нумерацию на уровне базы данных.

1 голос
/ 29 февраля 2012

Может быть допустимо обновлять главную страницу каждый раз, например если данные могли измениться после просмотра страницы сведений. Однако, если вы хотите, чтобы данные были доступны дольше, чем @ViewScoped, вы можете выбрать следующие варианты:

  • Вы должны использовать JEE6, частью которого является JSF 2.0, так что посмотрите на Объем беседы (часть CDI)
  • Некоторые дополнительные области действия для JEE6 CDI доступны через MyFaces CODI
  • Потенциально используйте Session Scope и удостоверьтесь, что вы убираете номер, когда появляется запрос, который не относится к странице Master или Details
  • Переработайте свой дизайн, чтобы использовать Ajax, поэтому при щелчке записи на главной странице ее данные загружаются в том же виде. Затем вы можете использовать @ ViewScoped

Я бы предпочел взглянуть на область разговора. Вы не упоминаете, какую реализацию JSF вы используете или в какой среде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...