Получить объект через Spring Form и ввести в сессию - PullRequest
0 голосов
/ 05 июля 2019

У меня есть объект, используемый для входа в мой Spring Web Application.Этот объект должен быть заполнен формой Spring и после проверки введен в сеанс.

Объект входа:

    @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 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
    @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

        }

    }

Когда я отправляю форму, объект «Credencial» имеет нулевые значения и ссылается на Autowiredучебный класс.Есть ли способ, которым я могу получить Credencial Object из формы и поместить его значение в Session, чтобы я мог использовать его только Spring?(Я не использую HttpServletRequest.getSession напрямую)

Я использую Java 6 и Spring 4

...