Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Vraptor+ Bean Validation + Validação 1:n

Olá , estou com um probleminha em relação ao bean validator em uma tela tela onde tento incluir um cliente e seus vários endereços, ambas as classes cliente e endereço tem as anotações do bean validator, e no fluxo normal do programa ao salvar o cliente eu salvo os endereços dele usando o cascade do jpa

@Entity
public class Cliente {

    @GeneratedValue @Id
    private Long id;

@NotEmpty
    private String nome;

    @OneToMany(mappedBy="cliente", orphanRemoval=true, cascade=CascadeType.ALL)
    private List<Endereco> enderecos;

}
@Entity
public class Endereco {

    @GeneratedValue @Id
    private Long id;

    @ManyToOne @JoinColumn(name="cliente_id")
    private Cliente cliente;
    @NotEmpty
    private String logradouro;
    private String bairro;
    private String numero;
    private String cidade;
    private String estado;

}

e tenho o meu controller:

    @Post("/cliente")
    public void adiciona(@Valid Cliente cliente) {
        validator.onErrorUsePageOf(this).criar();
        for(Endereco e :cliente.getEnderecos()){

            e.setCliente(cliente);
        }

        dao.adiciona(cliente);
        result.include("mensagem", "cliente adicionado com sucesso!");
        result.redirectTo(this).lista();
    }

se o usuário não colocar o nome do cliente por exemplo o vraptor consegue pegar o erro ,reexibir o formulário e colocar a mensagem que o cara deve informar o nome do cliente. Mas se por acaso o usuário esquecer de colocar o logradouro do endereço o vraptor não consegue capturar a exceção e sou redirecionado para a página de erro do tom cat. Como proceder pra fazer esse tipo de validação com o bean validator com vraptor, onde eu preciso validar o objeto pai e seus filhos?

3 respostas
solução!

Oi Ricardo, tudo bem?

Tenta anotar o atributo enderecos com @Valid.

Mais infos: http://docs.jboss.org/hibernate/validator/4.2/reference/en-US/html_single/#d0e496

Abraços!

Olá Leonardo, deu certo aqui, obrigado!

Perfeito!

Abraços.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software