AuthenticationManager returns NullPointerException

AuthenticationManager returns NullPointerException

我想为我的网络应用程序创建一个登录页面。在我在互联网上找到的用于集成 Spring 安全和 LDAP 的示例项目中,我让它工作了。当我尝试将工作示例集成到真实应用程序时,我总是遇到 NullPointerException。

解决了我的问题。

我只需要编辑这一行

@ManagedBean(name = "loginViewBean")

@ManagedBean

并在 login.xhtml 文件上进行其余配置。完成了。

您在同一个 class 上同时具有 spring 注释和 jsf 注释,因此如果您使用不同的名称引用它们(就像您很可能确实看到了自己的 'answer') ,你会得到不同的实例。那不好,也是您最初问题的原因。很可能(并且您没有 post 您的 xhtml)您将 xhtml 中的 bean 称为 loginViewBean。现在您删除了它并且(我怀疑)您开始将其称为 loginView,您得到了注入了 authenticationManager 的 Spring 托管实例,而不是没有注入 authenticationManger 的 JSF 托管实例。这导致了 NPE。你得到 Spring 一个很可能是由于你配置的 SpringEL 解析器优先于默认的 JSF 解析器。因此,删除 @ManagedBean@RequestScoped 并通过 spring 名称引用 bean 可以更好地解决问题。

另见

  • Spring JSF integration: how to inject a Spring component/service in JSF managed bean?