Использование OmniFaces 2.1 ViewScoped с Spring 3.1.0 в JSF 2.2

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

Кто-нибудь знает, будут ли следующие шаги в этом блоге PrimeFaces портировать ViewScope JSF 2.0 на Spring 3.0, чтобы расширить использование Spring org.omnifaces.cdi.ViewScoped из Omnifaces 2.1?

1 ответ

Решение

Вы можете просто использовать подход, описанный в блоге, который вы нашли. Только вы не можете и не можете точно портировать таким образом, чтобы он под крышками на самом деле использовал конкретные @ViewScoped аннотаций. По сути, вы должны реализовать тот же код, что и эти аннотации, используемые под обложками.

Оба стандарта JSF @ViewScoped и OmniFaces @ViewScoped делать под прикрытием в основном так же, как описано в блоге: ссылаться на экземпляры bean через UIViewRoot#getViewMap(), Только JSF 2.0/2.1 @ViewScoped неправильно сработал @PreDestroy бобов во всех случаях. Например, они не будут вызваны, когда истечет срок действия основного сеанса HTTP. OmniFaces решил эти проблемы для пользователей JSF 2.0/2.1. JSF сам решил их в 2.2. Так что в JSF 2.2 нет особой причины использовать OmniFaces @ViewScoped,

Хотя я хотел бы намекнуть здесь, что я для будущего OmniFaces 2.2 планирую добавить beforeunload зацепить <o:form> когда OmniFaces @ViewScoped bean используется, так что bean также действительно уничтожается, когда пользователь уходит с помощью GET, или обновляет страницу, или закрывает окно браузера, что делает его еще более полезным:)

Другие вопросы по тегам