SelectOneMenu+primefaces

7 respostas
S

Pessoal gostaria de saber como faço para popular e enviar para meu MB o objeto selecionado na comboBox, desde jpa obrigado a todos.

7 Respostas

lele_vader

Poderia fazer uma requisição ajax para atualizar a propriedade do managedBean

S

Não entendi muito bem, vou postar o código para ajudar melhor:

Bean:

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;
    }
}

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>
lele_vader

Qual o problema ?
Ele não está populando a propriedade do value do managedBean

S

Ele esta carregando, consegui fazer, o que não estou conseguindo é enviar o valor selecionado na comboBox e enviar para o servidor.

lele_vader

Dá algum erro ?
Ele tinha que popular a propriedade do value do selectOneMenu, que no seu caso é gerenciamentoCadastroEquipamentosMB.tipos

juno.rr

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:

&lt;p:selectOneMenu id="tipo" value="#{gerenciamentoCadastroEquipamentosMB.selecionado}" style="width: 200px;"&gt;
  ...
&lt;/p:selectedOneMenu&gt;

No bean:

...
private Object selecionado;

public void setSelecionado(Object o) {
  selecionado = o;
}

public Object getSelecionado() {
  return selecionado;
}
juno.rr

Também tem atributos faltando no f:selectItems.

Você precisa definir itemLabel, itemValue e var:

&lt;f:selectItems value="#{gerenciamentoCadastroEquipamentosMB.tipos}" var="tipo" 
                         itemLabel="#{tipo.nome}" itemValue="#{tipo}"/&gt;
Criado 25 de outubro de 2012
Ultima resposta 25 de out. de 2012
Respostas 7
Participantes 3