1
resposta

Erro ao usar validação dos campos com @Valid

Bom dia,

estou com a seguinte dúvida:

Modelo

@Entity
@Named
public class Cliente {

    @Id
    @GeneratedValue
    private Long id;

    @NotNull(message = "O campo nome não pode ser vazio!")
    private String nome;

    @NotNull(message = "O campo cpf não pode ser vazio!")
    @CPF(message = "CPF inválido!")
    private String cpf;

    @NotNull(message = "O campo email não pode ser vazio!")
    @Email(message = "Email inválido!")
    private String email;

    @NotNull(message = "O campo matrícula não pode ser vazio!")
    private String matricula;    

    @NotNull(message = "O campo celular não pode ser vazio!")
    private String celular;

    private String telefone;

    @NotNull(message = "O campo sexo não pode ser vazio!")
    private String sexo;

    @NotNull(message = "O campo data de nascimento não pode ser vazio!")
    private Date dataNascimento;

Controller

private final Result result;
    private final ClienteDao cDao;
    private final Validator validator;

    @Inject
    public ClienteController(Result result, ClienteDao cDao, Validator validator) {
        this.result = result;
        this.cDao = cDao;
        this.validator = validator;
    }

    public ClienteController() {
        this(null, null, null);
    }



public void adiciona(@Valid Cliente c) {

        validator.onErrorForwardTo(this).formulario();

        try {
        .
        .
        .
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
}

Está tudo funcionando, os campos são validados, as mensagens são exibidas, mas, os campos preenchidos no momento do clique do botão são zerados, limpos, ficam vazios...

O que tenho que fazer para resolver?

No aguardo.

1 resposta

Fala ai Roberto, de boa ?

Cara esse é o comportamento padrão da web, onde tudo é stateless.

Uma forma de resolver isso é passar o objeto que você recebe de volta para o formulário e lá você setar as informações na tela novamente.