Pessoal,
Estou batendo cabeça a 3 dias com esse treco e não sei qual o problema. Não consigo salvar a informação no banco. O problema está SelectOneMenu (eu acho), a informação com a relação das unidades aparecem na tela, mas na hora de salvar, ele salva todas as informações, menos a de unidade, clube e classe.
Se resolver o de um desses 3, resolve todos pois são praticamente iguais. Acho que estou usando errado.
Meu xhtml
<h:form id="conteudo1">
<h:panelGrid columns="2">
<f:ajax>
<h:outputLabel value="Nome: " for="nome" />
<h:inputText value="#{desbravadorBean.desbravador.nome}" id="nome" />
<h:outputLabel value="Nascimento: " for="nasc" />
<p:calendar pattern="dd/MM/yyyy" id="nasc" value="#{desbravadorBean.desbravador.nascimento.time}"/>
<h:outputLabel value="Pai: " for="pai" />
<h:inputText value="#{desbravadorBean.desbravador.pai}" id="pai" />
<h:outputLabel value="Mae: " for="mae" />
<h:inputText value="#{desbravadorBean.desbravador.mae}" id="mae" />
<h:outputLabel value="Endereço: " for="end" />
<h:inputText value="#{desbravadorBean.desbravador.endereco}" id="end" />
<h:outputLabel value="Telefone: " for="tel" />
<p:inputMask id="tel" mask="(99) 9999-9999" value="#{desbravadorBean.desbravador.telefone}"/>
<h:outputLabel value="Unidade: " for="unidade" />
<h:selectOneMenu value="#{desbravadorBean.desbravador.unidade}">
<f:selectItems value="#{unidadeBean.unidades}" var="unidade" itemValue="#{unidade}" itemLabel="#{unidade.nome}"/>
</h:selectOneMenu>
<h:outputLabel value="Clube: " for="clube" />
<h:selectOneMenu value="#{desbravadorBean.desbravador.clube.id}" >
<f:selectItems value="#{clubeBean.clubes}" var="clube" itemValue="#{clube.id}" itemLabel="#{clube.nome}"/>
</h:selectOneMenu>
<h:outputLabel value="Classe: " for="classe" />
<h:selectOneMenu value="#{desbravadorBean.desbravador.classe}">
<f:selectItems value="#{classeBean.classes}" var="classe" itemValue="#{classe.id}" itemLabel="#{classe.nome}"/>
</h:selectOneMenu>
<h:commandButton value="Gravar" action="#{desbravadorBean.salvar}" >
<f:ajax render=":conteudo1" />
</h:commandButton>
</f:ajax>
</h:panelGrid>
</h:form>
Meu bean Desbravador
@SessionScoped
@ManagedBean
public class DesbravadorBean {
private Desbravador desbravador = new Desbravador();
private List<Desbravador> desbravadores;
public Desbravador getDesbravador(){return this.desbravador;}
public void setDesbravador(Desbravador desbravador){this.desbravador = desbravador;}
public List<Desbravador> getDesbravadores(){
desbravadores = (new DAO<Desbravador>(Desbravador.class)).listaTodos();
return desbravadores;
}
@PostConstruct
public void carregarDesbravadores(){
desbravadores = (new DAO<Desbravador>(Desbravador.class)).listaTodos();
}
public void salvar(){
DAO<Desbravador> dao = new DAO<Desbravador>(Desbravador.class);
if (desbravador.getId() == null){
dao.adiciona(desbravador);
} else {
dao.atualiza(desbravador);
}
this.desbravador = new Desbravador();
this.desbravadores = dao.listaTodos();
}
public void remover(){
DAO<Desbravador> dao = new DAO<Desbravador>(Desbravador.class);
dao.remove(this.desbravador);
this.desbravador = new Desbravador();
}
}
Meu Bean Unidade
@ViewScoped
@ManagedBean
@SuppressWarnings(value="serial")
public class UnidadeBean implements Serializable {
private Unidade unidade = new Unidade();
private List<Unidade> unidades;
public Unidade getUnidade() {return unidade;}
public List<Unidade> getUnidades() {return unidades = (new DAO<Unidade>(Unidade.class)).listaTodos();}
}
Minha entidade Desbravador
@Entity
@SuppressWarnings(value="serial")
public class Desbravador implements Serializable{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private String nome;
@Temporal(TemporalType.DATE)
private Calendar nascimento;
private String mae;
private String pai;
private String endereco;
private String telefone;
@ManyToOne
private Unidade unidade;
@ManyToOne
private Classe classe;
@ManyToOne
private Clube clube;
//getters e setters
}
Minha entidade Unidade
@ViewScoped
@ManagedBean
@SuppressWarnings(value="serial")
public class UnidadeBean implements Serializable {
private Unidade unidade = new Unidade();
private List<Unidade> unidades;
public Unidade getUnidade() {return unidade;}
public List<Unidade> getUnidades() {return unidades = (new DAO<Unidade>(Unidade.class)).listaTodos();}
}