通过Spring Form获取对象并注入会话

时间:2019-07-05 17:45:12

标签: java spring web servlets session-variables

我在Spring Web应用程序中有一个用于登录的对象。该对象必须由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;
        }

    }

春季表格:


    <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对象,并将其值放在Session中,以便只能在Spring中使用它? (不直接使用HttpServletRequest.getSession)

我正在使用Java 6和Spring 4

0 个答案:

没有答案