Olá. Estou encontrando um problema quando vou cadastrar um objeto no meu formulário. Mesmo eu preenchendo os 4 campos necessários para o cadastro do objeto, a minha validation class continua n permitindo que o cadastro fosse concluido. Vou compartilhar os códigos:
Como pode ver, são 4 campos requeridos:
public class VisitanteValidation implements Validator{
@Override
public boolean supports(Class<?> clazz) {
return Visitante.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object target, Errors errors) {
ValidationUtils.rejectIfEmpty(errors, "nome", "field.required");
ValidationUtils.rejectIfEmpty(errors, "documento", "field.required");
ValidationUtils.rejectIfEmpty(errors, "placa", "field.required");
ValidationUtils.rejectIfEmpty(errors, "destino", "field.required");
}
}
Método do controller:
@RequestMapping(method=RequestMethod.POST)
public ModelAndView grava(MultipartFile fotoPath, @Valid Visitante visitante, BindingResult result, RedirectAttributes redirectAttributes) {
if(result.hasErrors()){
System.out.println("TEM ERRO");
return form(visitante);
}
visitante.setDataHora(Calendar.getInstance());
if (fotoPath != null && !fotoPath.getOriginalFilename().isEmpty()) {
String path = fileSaver.write("fotosPasta", fotoPath);
visitante.setfotoPath(path);
}
visitanteDao.gravar(visitante);
redirectAttributes.addFlashAttribute("sucesso", "Visitante Cadastrado com Sucesso");
return new ModelAndView("redirect:/visitantes");
}
E o form:
<div class="container">
<h1>Cadastro de Visitantes</h1>
<form:form action="${s:mvcUrl('VC#grava').build() }" method="POST"
modelAttribute="visitante" enctype="multipart/form-data">
<%--modelAttribute = novo commandName --%>
<div class="form-group">
<label>Nome</label>
<form:input path="nome" cssClass="form-control" />
<form:errors path="nome" />
</div>
<div class="form-group">
<label>Documento</label>
<form:input path="documento" cssClass="form-control" />
<form:errors path="documento" />
</div>
<div class="form-group">
<label>Placa do Veículo</label>
<form:input path="placa" cssClass="form-control" />
<form:errors path="placa" />
</div>
<div class="form-group">
<label>Destino de Visita</label>
<form:input path="destino" cssClass="form-control" />
<form:errors path="destino" />
</div>
<div class="form-group">
<label>Foto</label><input type="file" name="fotoPath"
class="form-control" />
</div>
<button type="submit" class="btn btn-primary">Cadastrar</button>
</form:form>
</div>
Como eu disse anteriormente, mesmo preenchendo os 4 campos necessários pelo validation, ele ainda retorna p lista.