Использование 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, или обновляет страницу, или закрывает окно браузера, что делает его еще более полезным:)