Как заставить JSF автоматически создавать сеансовый компонент

Это было задано в предыдущем вопросе (http://stackoverflow.com/questions/6043259/auto-instantiate-a-session-bean). Я реализовал решение, предложенное BalusC, но оно не работает. Это мой код:

@ManagedBean
@SessionScoped
public class UserSessionBean {

А ТАКЖЕ

@ManagedBean
@ViewScoped
public class ReaderBean implements Serializable {

@ManagedProperty("#{userSessionBean}")
private UserSessionBean userSessionBean;

Если я правильно понимаю BalusC, JSF должен автоматически создавать экземпляр сеансового компонента. В моем случае я получаю сообщение об ошибке, говорящее о том, что ReaderBean не может быть создан, поскольку не существует экземпляра UserSessionBean. Итак, как я могу заставить JSF управлять созданием экземпляров для меня? Ручное создание экземпляра и размещение на карте сеанса предположительно является хаком/обходным путем, поэтому я бы хотел этого избежать.


person Matthew Oakley    schedule 08.10.2012    source источник
comment
В дальнейшем читайте трассировку стека снизу вверх. Самая нижняя часть является первой основной причиной. Эта часть уже должна была намекнуть вам об отсутствующем сеттере.   -  person BalusC    schedule 08.10.2012


Ответы (1)


Я получил ответ.

Для управляемого свойства требуются методы Getter и Setter.

person Matthew Oakley    schedule 08.10.2012
comment
Действительно, но @ManagedProperty нужен только сеттер для выполнения инъекции. Получатель должен получить его из своего удерживающего компонента либо на странице, либо в другом классе/компоненте. - person Fritz; 08.10.2012