Question

I am using this tutorial to learn the basics of spring security and I have currently reached this page (Spring Security 3.1 Authentication using Custom Database Implementation and JSF 2.0). The problem is that even though I have copied everything exactly as they are written on his blog, I am still getting a NullPointerException if when I try login I have the "remember me" checked. As I have seen it is caused by the variable "userDetailsService" in the "LoginBean". I get:

javax.el.ELException: java.lang.NullPointerException

viewId=/pages/common/login.xhtml
location=C:\PortableApps\PortableApps\EclipsePortable\Data\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Spring_Test\pages\common\login.xhtml
phaseId=INVOKE_APPLICATION(5)

Caused by:
java.lang.NullPointerException - java.lang.NullPointerException
at com.mumz.jsfspringsec.beans.LoginBean.login(LoginBean.java:63)

/pages/common/login.xhtml at line 28 and column 127 action="#{loginMgmtBean.login}"

<HtmlCommandButton action="#{loginMgmtBean.login}" actionExpression="#{loginMgmtBean.login}" class="class javax.faces.component.html.HtmlCommandButton" clientId="btnLoginId" disabled="false" id="btnLoginId" immediate="false" inView="true" readonly="false" rendered="true" styleClass="loginPanelBtn" transient="false" type="submit" value="Login" location="/pages/common/login.xhtml at line 28 and column 127"/> - State size:0 bytes

Stack Trace

org.apache.myfaces.view.facelets.el.ContextAwareELException: javax.el.ELException: java.lang.NullPointerException
    at org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke(ContextAwareTagMethodExpression.java:108)
    at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:72)
    at javax.faces.component.UICommand.broadcast(UICommand.java:120)
    at javax.faces.component.UIViewRoot._broadcastAll(UIViewRoot.java:1023)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:286)
    at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1360)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
    at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:38)
    at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
    at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:322)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
    at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
    at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:139)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
    at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
    at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:184)
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:155)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
Caused by: javax.el.ELException: java.lang.NullPointerException
    at org.apache.el.parser.AstValue.invoke(AstValue.java:291)
    at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
    at org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke(ContextAwareTagMethodExpression.java:96)
    ... 56 more
Caused by: java.lang.NullPointerException
    at com.mumz.jsfspringsec.beans.LoginBean.login(LoginBean.java:63)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
    ... 58 more

Can anyone help?

EDIT:

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

    version="3.0">
    <!-- CONFIGURATION FILES both Bean definition and security -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
                /resources/CONFIGURATION/SPRING/BEANDEFINITION/jsfspring-sec-bean-config.xml
                /resources/CONFIGURATION/SPRING/SECURITY/jsfspring-sec-security-config.xml
        </param-value>
    </context-param>
    <!-- CONFIGURATION FILES END HERE -->
    <!-- PROJECT STAGE START FOR DEVELOPEMENT MARK IT AS DEVELOPMENT, FOR TESTING, 
        UAT, PRODUCTION REMOVE THIS -->
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <!-- PROJECT STAGE END -->
    <!-- Enable JSF Servlet -->
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
    <!-- Enable JSF Server End -->
    <!-- Integrate JSF and Spring -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!-- Integrate JSF and Spring End -->
    <!-- Enable Spring Filter, Spring Security works on the concept of Filters -->
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- Enable Spring Filter End -->
    <!-- Welcome File -->
    <welcome-file-list>
        <welcome-file>/pages/index/index.jsp</welcome-file>
    </welcome-file-list>
    <!-- Welcome File End -->
</web-app>

jsfspring-sec-bean-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:beans="http://www.springframework.org/schema/beans" xmlns:sec="http://www.springframework.org/schema/security"
    xsi:schemaLocation="

http://www.springframework.org/schema/beans


http://www.springframework.org/schema/beans/spring-beans-3.1.xsd


http://www.springframework.org/schema/security


http://www.springframework.org/schema/security/spring-security-3.1.xsd">

    <beans:bean id="navigator" name="navigator"
        class="com.mumz.jsfspringsec.beans.Navigator" scope="session">
    </beans:bean>

    <beans:bean id="loginBean" name="loginBean"
        class="com.mumz.jsfspringsec.beans.LoginBean" scope="prototype">
        <beans:property name="authenticationManager" ref="authenticationManager"></beans:property>
        <beans:property name="rememberMeServices" ref="rememberMeServices"></beans:property>
        <beans:property name="userDetailsService" ref="customjdbcUserService"></beans:property>
    </beans:bean>

    <beans:bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <beans:property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <beans:property name="url"
            value="jdbc:mysql://localhost:3306/jsf-spring-security" />
        <beans:property name="username" value="root" />
        <beans:property name="password" value="root" />
    </beans:bean>

    <beans:bean id="customjdbcUserService" class="com.mumz.jsfspringsec.dao.CustomJDBCDaoImpl">
        <beans:property name="dataSource" ref="dataSource" />
        <beans:property name="enableAuthorities" value="true" />
        <beans:property name="usersByUsernameQuery">
            <beans:value>
                SELECT JSF_SPRING_SEC_USERS_USERNAME,JSF_SPRING_SEC_USERS_PASSWORD, JSF_SPRING_SEC_USERS_ENABLED FROM JSF_SPRING_SEC_USERS WHERE JSF_SPRING_SEC_USERS_USERNAME = ?
            </beans:value>
        </beans:property>
        <beans:property name="authoritiesByUsernameQuery">
            <beans:value>
                select JSF_SPRING_SEC_ROLES_USERNAME,JSF_SPRING_SEC_ROLES_ROLE_NAME from JSF_SPRING_SEC_ROLES where JSF_SPRING_SEC_ROLES_USERNAME = ?
            </beans:value>
        </beans:property>
    </beans:bean>

    <beans:bean id="rememberMeServices"
        class="org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices">
        <beans:property name="key" value="jsfspring-sec" />
        <beans:property name="userDetailsService" ref="customjdbcUserService" />
        <beans:property name="alwaysRemember" value="true" />
        <beans:property name="tokenValiditySeconds" value="60" />
    </beans:bean>

    <beans:bean id="rememberMeAuthenticationProvider"
        class="org.springframework.security.authentication.RememberMeAuthenticationProvider">
        <beans:property name="key" value="jsfspring-sec" />
    </beans:bean>

    <beans:bean id="rememberMeFilter"
        class="org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter">
        <beans:property name="rememberMeServices" ref="rememberMeServices" />
        <beans:property name="authenticationManager" ref="authenticationManager" />
    </beans:bean>
</beans:beans>

jsfspring-sec-security-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sec="http://www.springframework.org/schema/security" xmlns:beans="http://www.springframework.org/schema/beans"
    xsi:schemaLocation="

http://www.springframework.org/schema/beans


http://www.springframework.org/schema/beans/spring-beans-3.1.xsd


http://www.springframework.org/schema/security


http://www.springframework.org/schema/security/spring-security-3.1.xsd">

    <sec:http auto-config="true" use-expressions="true">
        <sec:intercept-url pattern="/pages/secure/**"
            access="hasRole('ROLE_USER')" />
        <sec:intercept-url pattern="/pages/unsecure/**"
            access="permitAll" />
        <sec:intercept-url pattern="/pages/common/**"
            access="permitAll" />
        <sec:intercept-url pattern="/**" access="permitAll" />
        <sec:form-login login-page="/pages/common/login.jsf" />
        <sec:remember-me key="jsfspring-sec" services-ref="rememberMeServices" />
        <sec:logout invalidate-session="true"
            delete-cookies="JSESSIONID,SPRING_SECURITY_REMEMBER_ME_COOKIE"
            logout-success-url="/pages/common/login.jsf"></sec:logout>
    </sec:http>

    <sec:authentication-manager alias="authenticationManager">
        <sec:authentication-provider ref="rememberMeAuthenticationProvider"></sec:authentication-provider>
        <sec:authentication-provider
            user-service-ref="customjdbcUserService">
        </sec:authentication-provider>
    </sec:authentication-manager>
</beans:beans>

faces-config.xml

<?xml version="1.0" encoding="UTF-8"?>

<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
    version="2.0">
    <!-- Enable Spring -->
    <application>
        <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
    </application>
    <!-- Simple Navigation Rule -->
    <!-- If  user keys in ToSecure, move to /pages/secure/secured.xhtml-->
    <!-- Else If user keys in ToUnSecure, move to /pages/unsecure/unsecured.xhtml-->
    <navigation-rule>
        <display-name>pages/home/home.xhtml</display-name>
        <from-view-id>/pages/home/home.xhtml</from-view-id>
        <navigation-case>
            <from-action>#{navigator.navigateTo}</from-action>
            <from-outcome>Secured</from-outcome>
            <to-view-id>/pages/secure/secured.xhtml</to-view-id>
            <redirect></redirect>
        </navigation-case>
    </navigation-rule>
    <navigation-rule>
        <display-name>pages/home/home.xhtml</display-name>
        <from-view-id>/pages/home/home.xhtml</from-view-id>
        <navigation-case>
            <from-action>#{navigator.navigateTo}</from-action>
            <from-outcome>UnSecured</from-outcome>
            <to-view-id>/pages/unsecure/unsecured.xhtml</to-view-id>
            <redirect></redirect>
        </navigation-case>
    </navigation-rule>
    <navigation-rule>
        <display-name>pages/secure/secured.xhtml</display-name>
        <from-view-id>/pages/secure/secured.xhtml</from-view-id>
        <navigation-case>
            <from-action>#{loginMgmtBean.logout}</from-action>
            <from-outcome>loggedout</from-outcome>
            <to-view-id>/pages/home/home.xhtml</to-view-id>
            <redirect></redirect>
        </navigation-case>
    </navigation-rule>
    <navigation-rule>
        <display-name>pages/common/login.xhtml</display-name>
        <from-view-id>/pages/common/login.xhtml</from-view-id>
        <navigation-case>
            <from-action>#{loginMgmtBean.login}</from-action>
            <from-outcome>Secured</from-outcome>
            <to-view-id>/pages/secure/secured.xhtml</to-view-id>
        </navigation-case>
    </navigation-rule>
</faces-config>

LoginBean.java

package com.mumz.jsfspringsec.beans;

import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.RememberMeAuthenticationToken;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.web.authentication.RememberMeServices;

/**
 * The Class LoginBean.
 */
@ManagedBean(name = "loginMgmtBean")
@RequestScoped
public class LoginBean implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    /** The user name. */
    private String userName = null;

    /** The password. */
    private String password = null;

    /** The remember me. */
    private String rememberMe = null;

    /** The authentication manager. */
    @ManagedProperty(value = "#{authenticationManager}")
    private AuthenticationManager authenticationManager = null;

    /** The remember me services. */
    @ManagedProperty(value = "#{rememberMeServices}")
    private RememberMeServices rememberMeServices = null;

    @ManagedProperty(value="#{userDetailsService}")
    private UserDetailsService userDetailsService = null;
    /**
     * Login.
     *
     * @return the string
     */
    public String login() {
        try {
            Authentication result = null;
            if ("TRUE".equalsIgnoreCase(this.getRememberMe())) {
                UserDetails userDetails = userDetailsService.loadUserByUsername(getUserName());
                RememberMeAuthenticationToken rememberMeAuthenticationToken = new RememberMeAuthenticationToken(
                        "jsfspring-sec", userDetails,
                        userDetails.getAuthorities());
                HttpServletRequest httpServletRequest = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
                HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
                rememberMeServices.loginSuccess(httpServletRequest, httpServletResponse, rememberMeAuthenticationToken);
                result = rememberMeAuthenticationToken;
            } else {
                Authentication request = new UsernamePasswordAuthenticationToken(
                        this.getUserName(), this.getPassword());
                result = authenticationManager.authenticate(request);
            }
            SecurityContextHolder.getContext().setAuthentication(result);
        } catch (AuthenticationException e) {
            e.printStackTrace();
            return "Fail";
        }
        return "Secured";
    }

    /**
     * Cancel.
     *
     * @return the string
     */
    public String cancel() {
        return null;
    }

    /**
     * Logout.
     *
     * @return the string
     */
    public String logout() {
        SecurityContextHolder.clearContext();
        /**
         * Delete Cookies
         */
        HttpServletRequest httpServletRequest = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
        HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
        Cookie cookie = new Cookie("SPRING_SECURITY_REMEMBER_ME_COOKIE", null);
        cookie.setMaxAge(0);
        cookie.setPath(httpServletRequest.getContextPath().length() > 0 ? httpServletRequest.getContextPath() : "/");
        httpServletResponse.addCookie(cookie);
        return "loggedout";
    }

    /**
     * Gets the user name.
     *
     * @return the user name
     */
    public String getUserName() {
        return userName;
    }

    /**
     * Sets the user name.
     *
     * @param userName
     *            the new user name
     */
    public void setUserName(String userName) {
        this.userName = userName;
    }

    /**
     * Gets the password.
     *
     * @return the password
     */
    public String getPassword() {
        return password;
    }

    /**
     * Sets the password.
     *
     * @param password
     *            the new password
     */
    public void setPassword(String password) {
        this.password = password;
    }

    /**
     * Gets the remember me.
     *
     * @return the remember me
     */
    public String getRememberMe() {
        return rememberMe;
    }

    /**
     * Sets the remember me.
     *
     * @param rememberMe
     *            the new remember me
     */
    public void setRememberMe(String rememberMe) {
        this.rememberMe = rememberMe;
    }

    /**
     * Gets the authentication manager.
     *
     * @return the authentication manager
     */
    public AuthenticationManager getAuthenticationManager() {
        return authenticationManager;
    }

    /**
     * Sets the authentication manager.
     *
     * @param authenticationManager
     *            the new authentication manager
     */
    public void setAuthenticationManager(
            AuthenticationManager authenticationManager) {
        this.authenticationManager = authenticationManager;
    }

    /**
     * Gets the remember me services.
     *
     * @return the remember me services
     */
    public RememberMeServices getRememberMeServices() {
        return rememberMeServices;
    }

    /**
     * Sets the remember me services.
     *
     * @param rememberMeServices
     *            the new remember me services
     */
    public void setRememberMeServices(RememberMeServices rememberMeServices) {
        this.rememberMeServices = rememberMeServices;
    }

    public UserDetailsService getUserDetailsService() {
        return userDetailsService;
    }

    public void setUserDetailsService(UserDetailsService userDetailsService) {
        this.userDetailsService = userDetailsService;
    }
}

login.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
</h:head>
<h:body>
    <div align="right" style="">
        <h:form  id="loginFormId" prependId="false">
                <div id="loginFieldsPnlId">
                    <div id="loginFieldUsrContId">
                        <h:outputText id="outTxtUserNameId" value="Username:" name="outTxtUserNameNm"></h:outputText>
                        <h:inputText id="userName" required="true" value="#{loginMgmtBean.userName}" requiredMessage="Please enter username"></h:inputText>
                        <h:outputLabel id="outLblUserNameId" for="userName" name="outLblUserNameNm"></h:outputLabel>
                    </div>
                    <div id="loginFieldPassContId">
                        <h:outputText id="outTxtPasswordId" value="Password:" name="outTxtPasswordNm"></h:outputText>
                        <h:inputSecret id="password"  required="true" value="#{loginMgmtBean.password}" requiredMessage="Please enter password"></h:inputSecret>
                        <h:outputLabel id="outLblPasswordId" for="password" name="outLblPasswordNm"></h:outputLabel>
                    </div>
                    <div id="loginFieldPassContId">
                        <h:selectBooleanCheckbox id="rememberMe" value="#{loginMgmtBean.rememberMe}" label="Remember Me">Remember Me</h:selectBooleanCheckbox>
                    </div>
                </div>
                <div id="loginBtnPanelId">
                    <h:commandButton id="btnLoginId" value="Login" action="#{loginMgmtBean.login}" styleClass="loginPanelBtn"></h:commandButton>
                    <h:commandButton id="btnCancelId" value="Cancel" action="#{loginMgmtBean.cancel}" styleClass="loginPanelBtn" immediate="true" update="loginFormId"></h:commandButton>
                </div>
        </h:form>
    </div>
    <div>
        <h:messages></h:messages>
    </div>
</h:body>
</html>
Was it helpful?

Solution

I found the solution. I changed the "customjdbcUserService" with the "userDetailsService" in the jsfspring-sec-bean-config.xml and jsfspring-sec-security-config.xml and now the userDetailsService gets the correct values from the database, so it is not null anymore.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top