Bom Dia!
segue meu código abaixo que usa o validator para o campo descrição e ano que deveria mostrar a mensagem de erro no jsp quando for preenchido incorretamente.
O interessante q ele redireciona sempre pro formulario() quando os dados são invalidos mas não exibe a mensagem, se alguem puder me ajudar agradeço.
Código java
public class TurmaController {
private final TurmaDao dao;
private final Result result;
private final Validator validator;
public TurmaController(TurmaDao dao, Result result, Validator validator) {
this.dao = dao;
this.result = result;
this.validator = validator;
}
public void adiciona(Turma turma){
if (turma.getDescricao() == null || turma.getDescricao().length() > 40) {
validator.add(new ValidationMessage(
"Descrição é obrigatória e não pode ter mais que 40 letras",
"turma.descricao"));
}
if (turma.getAno() <= 2009) {
validator.add(new ValidationMessage(
"Preço precisa ser positivo", "turma.ano"));
}
validator.onErrorUse(page()).of(TurmaController.class).formulario();
dao.salva(turma);
result.redirectTo(TurmaController.class).lista();
}
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Adiciona Turma</title>
</head>
<body>
<div><c:forEach var="error" items="${errors}">
${error.category} - ${error.message}<br />
</c:forEach></div>
<form action="adiciona" method="POST">
<fieldset>
<legend>Adicionar Produto</legend>
<label for="descricao">Descrição:</label>
<textarea id="descricao" name="turma.descricao">${turma.descricao }</textarea>
<label for="ano">Ano:</label>
<input id="preco" type="text" name="turma.ano" value="${turma.ano}"/>
<button type="submit">Enviar</button>
</fieldset>
</form>
</body>
</html>