Amigos, preciso obter o valor de um selectOneMenu da minha pagina XHTM, infelizmente nao estou conseguindo.
Meu selectOneMenu é carregado com algumas informacoes do banco de dados.
Agora estou conseguindo obter o valor em um system.out.printLn normalmente, porem quando atribuo essa variável a minha variavel da entidade veiculo, ele continua nao salvando corretamente.
public class CadastroClienteBean implements Serializable {
private static final long serialVersionUID = 1L;
private Marca marcaSelecionada; //JOGUEI PARA ESSA VARIAVEL
private Veiculo veiculo;
public void salvar() {
veiculo.setMarca(getMarcaSelecionada()); //aqui eu jogo o valor da variavel que obtive no selectOneMenu para o campo marca.
cadastrarCarro();
this.cadastroClienteService.salvar(this.cliente);
FacesUtil.addInforMessage("Cadastro Salvo com sucesso!");
}
No meu banco de dados ele salva assim. Mesmo nao dando nenhum erro. e mesmo eu jogando o valor da variavel seleccionada pra minha entidade de veiculo.
public class Veiculo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private Marca marca;
@Column(length = 40)
public Marca getMarca() {
return marca;
}
public void setMarca(Marca marca) {
this.marca = marca;
}
.....
E a classe Marca.
public class Marca implements Serializable {
private static final long serialVersionUID = 1L;
private String marca;
@Column(length = 100)
public String getMarca() {
return marca;
}
public void setMarca(String marca) {
this.marca = marca;
}
Esse é meu Bean, Vou colocar ele todo aqui, que talvez voce identifique alguma coisa que eu nao consegui.
@Named
@ViewScoped
public class CadastroClienteBean implements Serializable {
private static final long serialVersionUID = 1L;
private Cliente cliente;
private Veiculo veiculo;
private Marca marcaSelecionada;
@Inject
private CadastroClienteService cadastroClienteService;
public CadastroClienteBean() {
limpar();
}
public void limpar() {
cliente = new Cliente();
this.veiculo = new Veiculo();
}
public void cadastrarCarro() {
this.veiculo.setCliente(cliente);
this.cliente.getVeiculo().add(this.veiculo);
}
public void salvar() {
System.err.println("marca selecionada" + marcaSelecionada.getMarca());
cadastrarCarro();
this.cadastroClienteService.salvar(this.cliente);
FacesUtil.addInforMessage("Cadastro Salvo com sucesso!");
}
// carrega o ennum de tipo (FISICA/ JURIDICA)
public TipoPessoa[] getTipoPessoa() {
return TipoPessoa.values();
}
public Cliente getCliente() {
return cliente;
}
public Veiculo getVeiculo() {
return veiculo;
}
public void setVeiculo(Veiculo veiculo) {
this.veiculo = veiculo;
}
public Marca getMarcaSelecionada() {
return marcaSelecionada;
}
public void setMarcaSelecionada(Marca marcaSelecionada) {
this.marcaSelecionada = marcaSelecionada;
}
}
Você tem que informar o relacionamento entre as classes, no caso o relacionamento seria Muitos para um, ou seja, muitos carros podem ter uma só marca e uma marca pode ter vários carros.