一言で言えば、プロパティを注入する代わりに@ManagedProperty
アノテーションが返されるということです。null
詳細: 2 つのクラスがあります。
@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 {
...
}
さて、知る限り、@ManagedProperty
アノテーションとセッターは、プロパティを注入するのに十分なはずです。または、少なくともここの他の質問とBalusCのブログはこれを示唆していますが、それでも常に残りnull
ます.
また興味深いことに、おそらくこの問題に関連しています。これらのクラスは、faces-config.xml
または アノテーションを使用してのみ登録されているにもかかわらず、すでにマネージド Bean として登録されているという警告が表示されます。(個別にブースで試してみましたが、違いはありません。) それらのいずれも存在しない場合、警告は消えますが、@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
および以外に、これらのマネージド Bean を「過剰登録」できる可能性があるものは何faces-config.xml
ですか? 確認できるマネージド Bean を収集するプロセスのトレースはありますか?