我在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