Ale*_*iro 5 annotations jsf-2 managed-bean
一句话:@ManagedProperty注解返回null而不是注入属性。
详细信息:有两个类:
@ManagedBean(name="authFilter")
@SessionScoped
public class AuthFilter implements Filter {
@ManagedProperty("#{loginBean}")
private LoginBean loginBean;
public void setLoginBean(LoginBean loginBean) {
this.loginBean = loginBean;
}
...
}
Run Code Online (Sandbox Code Playgroud)
和
@ManagedBean(name="loginBean")
@SessionScoped
public class LoginBean {
...
}
Run Code Online (Sandbox Code Playgroud)
现在,AFAIK的@ManagedProperty注解和设置器应该足以注入属性,或者至少此处和BalusC的博客中的其他问题建议了这一点,但仍然始终存在null。
这也很有趣,并且可能与此问题有关,我收到这些类的警告,即使它们仅通过faces-config.xml或带有注解进行了注册,但它们已经被注册为托管bean 。(分别对它们进行了试验,没有任何区别。)如果它们都不存在,则警告消失,但是对c无效@ManagedProperty。
WARNING: JSF1074: Managed bean named 'confListBean' has already been registered. Replacing existing managed bean class type <projectname>.web.authFilter with <projectname>.web.authFilter.
Run Code Online (Sandbox Code Playgroud)
因此,问题将是:
@ManagedProperty要注入我没有做的事情还需要什么?@notations和之外,还可以“过度注册”这些托管Bean faces-config.xml吗?是否存在收集我可以检查的托管bean的过程的跟踪?定义 loginBean 时,请确保将 eager 标志设置为 true。
@ManagedBean(name="loginBean", eager=true)
Run Code Online (Sandbox Code Playgroud)
这将确保 loginBean 被创建,即使它不是从 GUI 元素引用的。
| 归档时间: |
|
| 查看次数: |
6107 次 |
| 最近记录: |