2013-10-24 2 views
4

В одном предложении: аннотация @ManagedProperty возвращает null вместо того, чтобы вводить свойство.аннотация @ManagedProperty возвращает null вместо того, чтобы вводить свойство

подробности: Есть два класса:

@ManagedBean(name="authFilter") 
@SessionScoped 
public class AuthFilter implements Filter { 
    @ManagedProperty("#{loginBean}") 
    private LoginBean loginBean; 
    public void setLoginBean(LoginBean loginBean) { 
     this.loginBean = loginBean; 
    } 
    ... 
} 

и

@ManagedBean(name="loginBean") 
@SessionScoped 
public class LoginBean { 
    ... 
} 

Теперь AFAIK @ManagedProperty аннотацию и связующий должен быть достаточно для того, свойство быть введены, или, по крайней мере, другие вопросы здесь и блог BalusC предлагают это, но он все равно всегда остается null.

Это также интересно и, вероятно, связано с этой проблемой, что я получаю предупреждения для этих классов, что они уже зарегистрированы как управляемый компонент, даже если они зарегистрированы только через faces-config.xml или с аннотациями. ( Пробовал их стенд отдельно, без разницы.) Если ни один из них не присутствует, тогда WARNING исчезнут, но @ManagedProperty не работает с.

WARNING: JSF1074: Managed bean named 'confListBean' has already been registered. Replacing existing managed bean class type <projectname>.web.authFilter with <projectname>.web.authFilter. 

Таким образом, вопросы будут:

  • Что еще требуется для @ManagedProperty для инъекций, что я не делаю?
  • Что возможно «перерегистрировать» эти управляемые бобы, кроме @notations и faces-config.xml? Есть ли след для процесса, который собирает управляемые компоненты, которые я мог проверить?
+0

Как насчет добавления геттера для инъецируемого управляемого компонента? Я думаю, что вложение сеанса управляемых компонентов в другое с той же областью не является хорошей идеей, попробуйте изменить область действия «authFilter» для запроса. – Omar

+0

Есть ли у вас конфигурация в 'faces-config.xml'? – SRy

+0

@Omar Хорошие идеи. Я уже пробовал геттер раньше, не имел никакого значения. Хотя логически это не имеет смысла, я изменил область запроса, и это не имело никакого значения. –

ответ

2

При определении параметра loginBean убедитесь, что флаг fager равен true.

@ManagedBean(name="loginBean", eager=true) 

Это обеспечит создание loginBean, даже если на него не ссылаются элементы GUI.

Смежные вопросы