Сессионные компоненты JSF с просмотром вкладок - PullRequest
3 голосов
/ 03 февраля 2009

У нас есть следующая проблема ...

Среда приложения:

JSF, Richfaces, a4J

Рассмотрим следующий сценарий:

  • Пользователь входит в систему
  • Пользователь переходит на новую страницу, которая состоит из формы a4j, содержащей компоненты a4j, пользователь заполняет форму, но не отправляет.
  • Пользователь открывает новую вкладку, открывает тот же URL-адрес и заполняет новую форму новыми данными
  • Пользователь возвращается на свою первую вкладку и отправляет информацию (Примечание: все компоненты определены как область действия сеанса)

Результат:

Представленная информация - это информация из второй вкладки, но отправленная из первой вкладки, которая ожидается, пока бины определены как область сеанса.

Проблема:

Нам нужно получить поведение области запроса (т. Е. Работать с новой вкладкой как с новым запросом, хотя компонент определяется как область действия сеанса).

Примечания:

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

Есть предложения?

-

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 03 февраля 2009

Это хорошо известная проблема для веб-приложений.

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

Seam является надмножеством JSF и представляет новый conversation scope для бобы, которые делают именно то, что вы хотите.

Seam изначально поддерживает richfaces (оба являются проектами JBoss / Redhat), поэтому не стоит ожидать никаких проблем с интеграцией.

0 голосов
/ 05 февраля 2009

По какой причине бин должен находиться в области видимости сеанса?

Если это только для получения функциональности ajax, вы можете изменить bean-компонент на запрос и использовать тег a4j: keepAlive .

a4j: keepAlive расширяет рабочий цикл для bean-компонента области запроса, тогда ваш экземпляр bean-компонента действует так, как если бы он находился в области действия сеанса для ajax-запросов Когда пользователь открывает две одинаковые страницы, они используют два разных экземпляра компонента.

...