Pessoal gostaria de saber como faço para popular e enviar para meu MB o objeto selecionado na comboBox, desde jpa obrigado a todos.
Poderia fazer uma requisição ajax para atualizar a propriedade do managedBean
Não entendi muito bem, vou postar o código para ajudar melhor:
Bean:
[code]import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import org.primefaces.event.SelectEvent;
@ManagedBean(name = “gerenciamentoCadastroEquipamentosMB”)
@RequestScoped
public class GerenciamentoCadastroEquipamentosMB {
private Equipamento equipamento;
private List<Equipamento> equipamentos;
private List<SelectItem> tipos;
private List<SelectItem> antenas;
private List<SelectItem> funcoes;
private List<SelectItem> modelos;
private List<SelectItem> responsaveis;
private List<SelectItem> localizacoes;
private boolean linhaSelecionada = true;
private boolean btnEditar = true;
private boolean btnVisualizar = true;
private boolean btnExluir = true;
public GerenciamentoCadastroEquipamentosMB() {
this.equipamento = new Equipamento();
}
public void salvar(ActionEvent actionEvent) {
System.out.println("Tipo: " + this.equipamento.getTipo());
InterfaceEquipamentoDao interfaceEquipamentoDao = new EquipamentoDaoImp();
interfaceEquipamentoDao.salva(this.equipamento);
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage("Salvar Equipamento", "Equipamento " + this.equipamento.getClassificacao() + " salvo com sucesso."));
this.equipamento = new Equipamento();
}
public void editaEquipamento() {
InterfaceEquipamentoDao interfaceDao = new EquipamentoDaoImp();
interfaceDao.edita(this.equipamento);
this.btnEditar = false;
this.btnVisualizar = false;
this.btnExluir = false;
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage("Editar Equipamento", "Equipamento " + this.equipamento.getClassificacao() + " alterado com sucesso."));
}
public void excluirEquipamento(Long idEquipamento) {
InterfaceEquipamentoDao interfaceEquipamentoDao = new EquipamentoDaoImp();
this.equipamento = interfaceEquipamentoDao.buscaPorID(idEquipamento);
interfaceEquipamentoDao.exclui(this.equipamento);
this.btnEditar = false;
this.btnVisualizar = false;
this.btnExluir = false;
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage("Excluir Equipamento", "Equipamento " + this.equipamento.getClassificacao() + " excluido com sucesso."));
}
public void onRowSelect(SelectEvent event) {
this.btnEditar = false;
this.btnVisualizar = false;
this.btnExluir = false;
}
@PostConstruct
public void buscaTipoEquipamentos() {
InterfaceDao<Tipo> interfaceDao = new TipoDaoImp();
this.tipos = new ArrayList<SelectItem>(5);
for (Tipo tipo : interfaceDao.findAll()) {
this.tipos.add(new SelectItem(tipo.getIdTipo(), tipo.getNome()));
}
System.out.println("Tipos tem: " + this.tipos.size() + " registros.");
}
@PostConstruct
public void buscaAntenas() {
InterfaceDao<Antena> interfaceDao = new AntenaDaoImp();
this.antenas = new ArrayList<SelectItem>(5);
for (Antena antena : interfaceDao.findAll()) {
this.antenas.add(new SelectItem(antena.getIdAntena(), antena.getNome()));
}
}
@PostConstruct
public void buscaFuncoes() {
InterfaceDao<Funcao> interfaceDao = new FuncaoDaoImp();
this.funcoes = new ArrayList<SelectItem>(5);
for (Funcao funcao : interfaceDao.findAll()) {
this.funcoes.add(new SelectItem(funcao.getIdFuncao(), funcao.getNome()));
}
}
@PostConstruct
public void buscaModelos() {
InterfaceDao<Modelo> interfaceDao = new ModeloDaoImp();
this.modelos = new ArrayList<SelectItem>(5);
for (Modelo modelo : interfaceDao.findAll()) {
this.modelos.add(new SelectItem(modelo.getIdModelo(), modelo.getNome()));
}
}
@PostConstruct
public void buscaResponsaveis() {
InterfaceDao<Responsavel> interfaceDao = new ResponsavelDaoImp();
this.responsaveis = new ArrayList<SelectItem>(5);
for (Responsavel responsavel : interfaceDao.findAll()) {
this.responsaveis.add(new SelectItem(responsavel.getIdResponsavel(), responsavel.getNome()));
}
}
@PostConstruct
public void buscaLocalizacoes() {
InterfaceDao<Localizacao> interfaceDao = new LocalizacaoDaoImp();
this.localizacoes = new ArrayList<SelectItem>(5);
for (Localizacao localizacao : interfaceDao.findAll()) {
this.localizacoes.add(new SelectItem(localizacao.getIdLocalizacao(), localizacao.getNome()));
}
}
public List<SelectItem> getTipos() {
return tipos;
}
public void setTipos(List<SelectItem> tipos) {
this.tipos = tipos;
}
public List<SelectItem> getAntenas() {
return antenas;
}
public void setAntenas(List<SelectItem> antenas) {
this.antenas = antenas;
}
public List<SelectItem> getFuncoes() {
return funcoes;
}
public void setFuncoes(List<SelectItem> funcoes) {
this.funcoes = funcoes;
}
public List<SelectItem> getModelos() {
return modelos;
}
public void setModelos(List<SelectItem> modelos) {
this.modelos = modelos;
}
public List<SelectItem> getResponsaveis() {
return responsaveis;
}
public void setResponsaveis(List<SelectItem> responsaveis) {
this.responsaveis = responsaveis;
}
public List<SelectItem> getLocalizacoes() {
return localizacoes;
}
public void setLocalizacoes(List<SelectItem> localizacoes) {
this.localizacoes = localizacoes;
}
public Equipamento getEquipamento() {
return equipamento;
}
public void setEquipamento(Equipamento equipamento) {
this.equipamento = equipamento;
}
public List<Equipamento> getEquipamentos() {
InterfaceEquipamentoDao interfaceEquipamentoDao = new EquipamentoDaoImp();
this.equipamentos = interfaceEquipamentoDao.buscaEquipamentos();
return this.equipamentos;
}
public void setEquipamentos(List<Equipamento> equipamentos) {
this.equipamentos = equipamentos;
}
public boolean isLinhaSelecionada() {
return linhaSelecionada;
}
public void setLinhaSelecionada(boolean linhaSelecionada) {
this.linhaSelecionada = linhaSelecionada;
}
public boolean isBtnEditar() {
return btnEditar;
}
public void setBtnEditar(boolean btnEditar) {
this.btnEditar = btnEditar;
}
public boolean isBtnVisualizar() {
return btnVisualizar;
}
public void setBtnVisualizar(boolean btnVisualizar) {
this.btnVisualizar = btnVisualizar;
}
public boolean isBtnExluir() {
return btnExluir;
}
public void setBtnExluir(boolean btnExluir) {
this.btnExluir = btnExluir;
}
}
[/code]
página:
<h:form id="formCadEquipamento">
<p:dialog header="Cadastrar Equipamento" widgetVar="dlgCadEquipamento" resizable="false" id="dialogCadEquipamento" modal="true">
<h:panelGrid id="pngCadastrar" columns="2" cellpadding="4" >
<h:outputLabel value="Tag:"/>
<p:inputText value="#{gerenciamentoCadastroEquipamentosMB.equipamento.tag}" disabled="false" style="width: 200px;font-weight:bold; "/>
<h:outputLabel value="Tipo:"/>
<p:selectOneMenu id="tipo" value="#{gerenciamentoCadastroEquipamentosMB.tipos}" style="width: 200px;">
<f:selectItem itemLabel="--Selecionar Tipo--" itemValue="" />
<f:selectItems value="#{gerenciamentoCadastroEquipamentosMB.tipos}" />
</p:selectOneMenu>
<h:outputLabel value="Potência:"/>
<p:inputText value="#{gerenciamentoCadastroEquipamentosMB.equipamento.potenciaMax}" disabled="false" style="width: 200px;font-weight:bold; "/>
<h:outputLabel value="Classificação:"/>
<p:inputText value="#{gerenciamentoCadastroEquipamentosMB.equipamento.classificacao}" disabled="false" style="width: 200px;font-weight:bold; "/>
<h:outputLabel value="Antena:"/>
<p:inputText value="#{gerenciamentoCadastroEquipamentosMB.equipamento.antena.nome}" disabled="false" style="width: 200px;font-weight:bold; "/>
<h:outputLabel value="Alcance:"/>
<p:inputText value="#{gerenciamentoCadastroEquipamentosMB.equipamento.alcance}" disabled="false" style="width: 200px;font-weight:bold; "/>
<h:outputLabel value="modelo:"/>
<p:inputText value="#{gerenciamentoCadastroEquipamentosMB.equipamento.modelo.nome}" disabled="false" style="width: 200px;font-weight:bold; "/>
<h:outputLabel value="Função:"/>
<p:inputText value="#{gerenciamentoCadastroEquipamentosMB.equipamento.funcao.nome}" disabled="false" style="width: 200px;font-weight:bold; "/>
<h:outputLabel value="Localização:"/>
<p:inputText value="#{gerenciamentoCadastroEquipamentosMB.equipamento.localizacao.nome}" disabled="false" style="width: 200px;font-weight:bold; "/>
<h:outputLabel value="Responsável:"/>
<p:inputText value="#{gerenciamentoCadastroEquipamentosMB.equipamento.responsavel.nome}" disabled="false" style="width: 200px;font-weight:bold; "/>
</h:panelGrid>
<p:separator/>
<p:commandButton value="OK" actionListener="#{gerenciamentoCadastroEquipamentosMB.salvar}" update=":formEquipamento:tableEquipamentos :formEquipamento:growl :formEquipamento:btnEditar :formEquipamento:btnExcluir :formEquipamento:btnVisualizar :formCadEquipamento:dialogCadEquipamento" oncomplete="dlgCadEquipamento.hide();"/>
<p:commandButton value="Cancelar" onclick="dlgCadEquipamento.hide();"/>
</p:dialog>
</h:form>
Qual o problema ?
Ele não está populando a propriedade do value do managedBean
Ele esta carregando, consegui fazer, o que não estou conseguindo é enviar o valor selecionado na comboBox e enviar para o servidor.
Dá algum erro ?
Ele tinha que popular a propriedade do value do selectOneMenu, que no seu caso é gerenciamentoCadastroEquipamentosMB.tipos
O problema está na propriedade value do p:selectOneMenu
Nessa propriedade você precisa definir um método do bean para setar o o objeto selecionado. Por exemplo:
<p:selectOneMenu id="tipo" value="#{gerenciamentoCadastroEquipamentosMB.selecionado}" style="width: 200px;">
...
</p:selectedOneMenu>
No bean:
...
private Object selecionado;
public void setSelecionado(Object o) {
selecionado = o;
}
public Object getSelecionado() {
return selecionado;
}
Também tem atributos faltando no f:selectItems.
Você precisa definir itemLabel, itemValue e var:
<f:selectItems value="#{gerenciamentoCadastroEquipamentosMB.tipos}" var="tipo"
itemLabel="#{tipo.nome}" itemValue="#{tipo}"/>