Я использую Myfaces CODI @ViewAccessScoped backing bean в моем приложении JSF.Одним из преимуществ является то, что мне не нужно использовать параметры представления для передачи информации между представлениями.Для записи @ViewAccessScoped гарантирует, что бин доступен до тех пор, пока первый запрос нового представления не получит к нему доступ.Возьмите этот случай, когда я хочу передать строковое значение со страницы 1 на страницу 2:
Page1Bean.java (вспомогательный компонент для page1.xhtml)
@Inject private Page2Bean page2Bean;
private String source = "Hello, World!";
...
page2Bean.setTarget(source);
Page2Bean.java (вспомогательный компонент для page2.xhtml)
private String target;
Если я перехожу прямо со страницы 1 на страницу 2, то при доступе к # {page2Bean.target} со страницы 2 он имеет значение «привет, мир!».
Фактически я перемещаю данные из представления page1 в представление page2.Другой вариант заключается в извлечении данных из представления page1 в представление page2, поэтому в Page2Bean я @Inject Page1Bean и @ViewAccessScoped обеспечивает мне доступ к page1Bean.getSource () (если он был в предыдущем представлении).
Это все хорошо, но в реальном мире я могу захотеть перейти со страницы 1 на любую из нескольких других страниц, в зависимости от ввода пользователя.Итак, Page1Bean.java выглядит так:
Page1Bean.java (исправлено)
@Inject private Page2Bean page2Bean;
@Inject private Page3Bean page3Bean;
@Inject private Page4Bean page4Bean;
@Inject private Page5Bean page5Bean;
@Inject private Page6Bean page6Bean;
@Inject private Page7Bean page7Bean;
@Inject private Page8Bean page8Bean;
Теперь мой вопрос: всегда ли объем памяти page1Bean включает в себя page2Bean- page8Bean?или память будет использоваться только в том случае, если я получу доступ к одному из компонентов @ Inject во время выполнения?
Надеюсь, это не слишком наивный вопрос, но я не совсем уверен, как он будет работать, и еслиответ на первый вопрос - да, я более или менее использую @SessionScoped!.
Спасибо за любые разъяснения.