Boa tarde,
Estou desenvolvento um sistema com Spring MVC e uma das partes desse sistema consiste em uma tela com um formulario em que são carregadas opções de escolha de clientes usuarios e uma data. Esses dados são enviados para o servidor onde deveria ocorrer o bind com o parametro do tipo ContaDespesa
.
Entretanto o comportamento esperado não ocorre e recebo um HTTP Status 400 – Bad Request
como resposta.
Segue o código:
[imports omitidos]
@Controller
@RequestMapping("/admin")
public class AdminController {
@Autowired
private UsuarioDAO usuarioDao;
@Autowired
private ContaDespesaDAO contaDespesaDao;
@Autowired
private ClienteDao clientesDao;
[...]
@RequestMapping("contas/form")
public ModelAndView formularioCadastroConta() {
ModelAndView modelAndView = new ModelAndView("admin/cadastro/conta");
modelAndView.addObject("situacoes", SituacaoConta.values());
List<Cliente> clientesDisponiveis = clientesDao.listar();
modelAndView.addObject("clientesDisponiveis", clientesDisponiveis);
List<Usuario> colaboradoresDisponiveis = usuarioDao.listarColaboradoresAtivos();
modelAndView.addObject("colaboradoresDisponiveis", colaboradoresDisponiveis);
return modelAndView;
}
@RequestMapping(value = "contas/cadastro", method = RequestMethod.POST)
public ModelAndView cadastroConta(ContaDespesa conta, RedirectAttributes redirectAttributes) {
ModelAndView modelAndView = new ModelAndView("redirect:./");
redirectAttributes.addFlashAttribute("statusCadastro", "Conta criada com sucesso");
conta.setSituacao(SituacaoConta.ATIVA);
contaDespesaDao.gravar(conta);
return modelAndView;
}
}
form:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Cadastro de conta </title>
</head>
<body>
<h1>Novo Conta</h1>
<form action="${s:mvcUrl('AC#cadastroConta').build() }"
method="POST">
<div>
<label for="usuario">Usuario</label> <select id="usuario"
name="usuario">
<c:forEach items="${colaboradoresDisponiveis}" var="colaborador">
<option value="${colaborador }">${colaborador.nome }</option>
</c:forEach>
</select>
</div>
<div>
<label for="cliente">Cliente</label> <select id="cliente"
name="cliente">
<c:forEach items="${clientesDisponiveis}" var="cliente">
<option value="${cliente }">${cliente.nome }</option>
</c:forEach>
</select>
</div>
<div>
<label for="dataInicio">Data de inicio</label> <input type="date" id="dataInicio"
name="dataInicio" required/>
</div>
<!-- TODO decidir se data de fim sera inclusa ao criar ou ao finalizar a conta -->
<button type="submit">Cadastrar Conta</button>
</form>
</body>
</html>