vendredi 5 juillet 2019

Get object via Spring Form and inject to session

I have an object used for login in my Spring Web Application. This object must be filled by a Spring Form and after validation, injected to session.

Login Object:

    @Component
    @SessionScope
    public class Credencial {

        @CodigoFuncional(message="O valor informado não é um código funcional!")
        private String codigoFuncional;

        @Size(min=7, message="A senha deve ter pelo menos 7 caracteres")
        private String senha;

        private String nome;

        private int juncao; 

        private boolean ativo;

        public Credencial() {}

        public Credencial(String codigoFuncional, String nome,
                int juncao, boolean ativo) {
            this.codigoFuncional = codigoFuncional;
            this.nome = nome;
            this.juncao = juncao;
            this.ativo = ativo;
        }

        public String getCodigoFuncional() {
            return codigoFuncional;
        }

        public void setCodigoFuncional(String codigoFuncional) {
            this.codigoFuncional = codigoFuncional;
        }

        public String getSenha() {
            return senha;
        }

        public void setSenha(String senha) {
            this.senha = senha;
        }

        public String getNome() {
            return nome;
        }

        public void setNome(String nome) {
            this.nome = nome;
        }

        public int getJuncao() {
            return juncao;
        }

        public void setJuncao(int juncao) {
            this.juncao = juncao;
        }

        public boolean isAtivo() {
            return ativo;
        }

        public void setAtivo(boolean ativo) {
            this.ativo = ativo;
        }

    }

Spring Form:


    <form:form class="m-t" id="form-login" modelAttribute="credencial" name="form-login" role="form" action="/SCDA/validarLogin/" method="POST">
                        <form:errors cssClass="erro"/>
                        <form:hidden id="senha-encriptada" path="senha" />
                        <div class="form-group">
                            <form:input path="codigoFuncional" type="text" class="form-control" placeholder="Código Funcional" required />
                            <form:errors path="codigoFuncional" cssClass="erro"/>
                        </div>
                        <div class="form-group">
                            <input type="password" id="senha" class="form-control" placeholder="Senha do CORP" />
                            <form:errors path="senha" cssClass="erro"/>
                        </div>
                        <a href="javascript:validaLogin()" title="Fazer Login" class="btn btn-primary block full-width m-b">Login</a>
                    </form:form>

Controller that receives the form:

    @Controller
    @RequestMapping(value="/")
    @SessionAttributes("credencial")
    public class CredencialController {

        @Autowired
        private Credencial credencial;

        @PostMapping(value="/validarLogin/")
        public RedirectView efetuarLogin(RedirectAttributes atributos, @Valid @ModelAttribute("credencial") Credencial credencial, BindingResult resultado, ModelMap modelo){

            //validation and database communication

        }

    }

When I submit the form, the Object "Credencial" comes with null values, and referencing the Autowired class. Is there a way that I can get the Credencial Object from the form, and put its value on the Session so I can use it Spring only? (Not using HttpServletRequest.getSession directly)

I'm using Java 6 and Spring 4




Aucun commentaire:

Enregistrer un commentaire