У меня есть два компонента, использующих @Named, один с @SessionScoped, а другой с @ViewScoped. Я могу внедрить bean-компонент @ViewScoped в @SessionScoped, и я пытаюсь сделать наоборот, и у меня почти работает, но у меня нет таких же экземпляров.
Я вижу это, когда печатаю this.hashcode() внутри метода @PostContruct компонента viewScoped и сравниваю его с введенным внутри компонента sessionScoped.
Итак, я нашел решение, но я не знаю, является ли это хорошей практикой: внутри метода @PostContruct bean-компонента ViewScoped после внедрения bean-компонента SessionScoped я отправляю ViewScoped в SessionScoped через à setter.
если я хорошо понял, что эти объекты привязаны к пользователю, так что это не создает никаких проблем, я прав?
@Named
@ViewScoped
public class ViewScopedBean {
@Inject
protected SessionScopedBean sessionScopedBean;
@PostContruct
public void init(){
sessionScopedBean.setViewScopedBean(this);
}
}
@Named
@SessionScoped
public class SessionScopedBean {
protected ViewScopedBean viewScopedBean ;
public void setViewScopedBean(ViewScopedBean viewScopedBean){
this.viewScopedBean = viewScopedBean;
}
}
hashCode
(которое может быть вызвано на уровне прокси). Во-вторых, вы уверены, что достаточно хорошо понимаетеViewScoped
жизненный цикл? Например. может быть логично, что вы получаете два разных экземпляра, потому что они привязаны к представлению JSF. См. также этот ответ - person Siliarus   schedule 26.02.2018