В настоящее время я изучаю JSF 2.0, и я так рад за существование этой функции области разговора, что очень полезно при открытии новой вкладки или в новом окне на одна и та же страница и имеет отдельные ресурсы, не перекрывая друг друга.JSF CDI: область разговора по бокам [s] лучшая практика
Но им любопытно, как это реализовать в хорошем смысле, о том, когда начать разговор и когда его закрыть.
В моем случае у меня есть каждый CDI-компонент для каждой страницы JSF. И скажем, что у меня есть меню, и когда его нажимают, это приведет к странице A, а от A может привести к B, B может привести к тому, что C, C может привести к D, все эти 4 страницы связаны в одном цепь.
Доступ к свойствам A из компонентов B или C или D возможен, доступ к свойствам B также возможен из C или D-компонентов и так далее.
Теперь им совсем запутались:
- ли все эти A B C D должен быть в разговоре рамки или нет, возможно, просто? Потому что я думаю, что иногда с другой страницы, которая за пределами цепи ABCD, например, на странице F, она может перейти на страницу B, , хотя я не знаю, как поставить данных bean B еще.
- ли все эти ABCD должны быть объединены в один боб
- , где и когда начать разговор, им думать о конструктора, но я не думаю, что это хорошая идея, потому что я предпочитаю, начиная разговор при первом обращении страницу, а не боб
- , где и когда, чтобы остановить разговор, так что не будут неиспользованных ресурсов торчать
Пожалуйста, поделитесь своими мыслями с этим вопросом.
CDI не входит в стандартный JSF.CDI означает контекст и инжекцию зависимостей (JSR-299), который охватывает аннотации пакета 'javax.enterprise'. Область разговора также не является частью стандартного JSF. Это было изобретение JBoss Seam во времена JSF 1.2 и было принято спецификацией JSF 2.0 как View Scope, togglable посредством аннотации '@ ViewScoped'. Теперь, о чем вы на самом деле говорите? – BalusC
Здравствуйте, BalusC, спасибо за разъяснение. Я использовал термин CDI, чтобы четко понять, что я использую, но, может быть, эта информация не связана с моим вопросом, мои извинения :) Насколько я знаю, @ViewScoped предназначен для того, чтобы одна страница была повторно отображена, и свойства будут сохранялось. Но то, что я хотел достичь из области разговора, заключается в том, что я могу открыть одну и ту же страницу на нескольких вкладках, причем каждая вкладка будет иметь свою собственную область сеанса. Поэтому, отправляя значение «albert» на myBean.name на вкладке, не будет переопределять myBean.name на других вкладках. Но я смутился о том, с чего начать и закончить разговор. – bertie
И это становится более запутанным для меня, если есть 4 страницы, например, страница A - это страница просмотра, где пользователь может выполнять поиск, страница B - это страница подробностей, где пользователь может изменять детали, на странице C пользователь может изменить суб подробно и т. д. Если бы я хотел открыть страницу A на нескольких вкладках, не затрагивая другую, я должен использовать область разговора для компонента A. Но я полагаю, что это тоже будет область разговора для B C и D? Также о том, где и когда я должен начать/завершить разговор. Я имею в виду, пользователь может открыть новые вкладки и закрыть вкладки. Как я могу обнаружить это и закрыть разговор? – bertie