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?