SOCORRO h:selectOneMenu

Olá pessoal fiquei o dia todo hoje
por conta de resolver esse problema não
estou conseguindo nem a pau!!!

Fiz igual o exemplo:

http://www.coderanch.com/t/212264/JSF/java/get-selectOneMenu-value

Mas mesmo assim não deu certo
eu consigo executar a ação mas aparece um
Warning e por causa desse Warning não consigo ir
para a outra página.

public List getProdutoresCombo(){

        ProdutorServices produtorServices = new ProdutorServices();
        this.produtoresCombo  = new ArrayList();        

        try {
            for (Produtor p : produtorServices.listarProdutores()) {
                //Lista de SelectItems (String, String)                
                this.produtoresCombo.add(new SelectItem(String.valueOf(p.getIdProdutor()), p.getNome()));
            }
        }
        ...
        return this.produtoresCombo;

    }

No JSF:

<h:selectOneMenu  styleClass="dimensao_combo" value="#{SolicitacaoController.idProdutor}">//idProdutor é uma String
        <f:selectItems value="#{SolicitacaoController.produtoresCombo}" />//Lista (String, String)
</h:selectOneMenu>

Será que alguém poderia me dar uma ajuda?

[]'s.

Olá pessoal,
será que alguém poderia me dar uma ajuda?

[]'s.

A idéia é essa mesmo, ter um selectOneMenu com a lista de SelectItems para fornecer os valores possíveis.
Resta saber mais detalhes sobre o que está acontecendo… que warning é esse que aparece? É na hora de entrar na página que tem o combo ou na hora de submeter?

Jóia Gomes?
Eu descobri da onde esta vindo esse warning
ele esta vindo da outra página que eu chamo
e nessa outra página tem um form do tipo:

<h:form>

                        <h:selectManyCheckbox value="#{AmostraController.selectedItems}">
                            <f:selectItem id="analise1" itemLabel="Exame Organoléptico" itemValue="1" />
                            <f:selectItem id="analise2" itemLabel="Densidade Relativa" itemValue="2" />
                            <f:selectItem id="analise3" itemLabel="Cobre" itemValue="3" />
                            <f:selectItem id="analise4" itemLabel="Extrato Seco" itemValue="4" />
                            <f:selectItem id="analise5" itemLabel="Grau Álcolico Real" itemValue="5" />
                            <f:selectItem id="analise6" itemLabel="Acidez Volátil em Ácido Acético" itemValue="6" />
                            <f:selectItem id="analise7" itemLabel="Álcool Superior" itemValue="7" />
                            <f:selectItem id="analise8" itemLabel="Furfural" itemValue="8" />
                            <f:selectItem id="analise9" itemLabel="Aldeídos em Aldeídos Acético" itemValue="9" />
                            <f:selectItem id="analise10" itemLabel="Ésteres em Acetato de Etila" itemValue="10" />
                            <f:selectItem id="analise11" itemLabel="Soma de Componentes Secundários" itemValue="11" />
                            <f:selectItem id="analise12" itemLabel="Álcool Metílico" itemValue="12" />
                            <f:selectItem id="analise13" itemLabel="Açucares Totais - Aguardente Simples" itemValue="13" value="true" />
                            <f:selectItem id="analise14" itemLabel="Açucares Totais - Aguardente Adoçada" itemValue="14" value="true" />
                        </h:selectManyCheckbox>
                        <h:commandButton value="Voltar"/> &nbsp; &nbsp;
                        <h:commandButton value="Avançar" action="#{AmostraController.submit}"/>
                    </h:form>

Mas aparece a seguinte mensagem:

javax.servlet.ServletException: Argument Error: An option for component j_id_jsp_762078485_22 was not an instance of javax.faces.model.SelectItem.  Type found: java.lang.String.
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

Será que tem como vc ou alguém me dar uma
ajuda Gomes?

[]'s.

Ainda não sei qual é o problema, mas tem algumas dicas que podem ajudar a isolá-lo:

  1. Defina um id para seus componentes ( <h:selectManyCheckbox id=“comboBlaBlaBla”… ), assim ele aparece na mensagem do log identificando melhor o componente com erro

  2. Declare e instancie a lista de SelectItems utilizando generics:

List<SelectItem> produtoresCombo; .... produtoresCombo = new ArrayList<SelectItem>();Dessa forma evita-se que acidentalmente algum elemento de outro tipo esteja sendo adicionado.

  1. Tente uma versão mais simples do método que retorna os itens, só para facilitar os testes:

public List getProdutoresCombo(){ List<SelectItem> produtoresComboTeste = new ArrayList<SelectItem>(); produtoresComboTeste.add(new SelectItem("VALOR1", "Primeiro Item")); produtoresComboTeste.add(new SelectItem("VALOR2", "Segundo Item")); return produtoresComboTeste; //ProdutorServices produtorServices = new ProdutorServices(); //this.produtoresCombo = new ArrayList(); //try { // for (Produtor p : produtorServices.listarProdutores()) { // //Lista de SelectItems (String, String) // this.produtoresCombo.add(new SelectItem(String.valueOf(p.getIdProdutor()), p.getNome())); // } //} //... //return this.produtoresCombo; }

Jóia Gomes eu fiz o q vc me falou
dos generics e agora esta aparecendo a
seguinte mensagem no terminal:

INFO: WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=[severity=(INFO 0), summary=(Solicitação Registrada com sucesso!), detail=(Solicitação Registrada com sucesso!)]

Você Gomes ou alguém sabe o que pode ser esse Warning?

[]'s.

Olá Gomes apareceu outro
Warning:

INFO: WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=j_id_jsp_762078485_18[severity=(ERROR 2), summary=(/nova_amostra.jsp(94,24) '#{AmostraController.amostra.tipoAmostra}' Target Unreachable, 'amostra' returned null), detail=(/nova_amostra.jsp(94,24) '#{AmostraController.amostra.tipoAmostra}' Target Unreachable, 'amostra' returned null)]
sourceId=j_id_jsp_762078485_20[severity=(ERROR 2), summary=(/nova_amostra.jsp(98,24) '#{AmostraController.amostra.tipoBebida}' Target Unreachable, 'amostra' returned null), detail=(/nova_amostra.jsp(98,24) '#{AmostraController.amostra.tipoBebida}' Target Unreachable, 'amostra' returned null)]

Será que tem como você ou alguém me dar uma ajuda Gomes?

[]'s.

Eu estou usando os seguintes métodos
que eu criei aqui mas não está dando certo
Gomes:

public List<SelectItem> getTipoAmostraCombo(){        
        this.amostrasCombo  = new ArrayList<SelectItem>();
        this.amostrasCombo.add(new SelectItem(TipoAmostra.AGUARDENTE_CANA));        
        this.amostrasCombo.add(new SelectItem(TipoAmostra.AGUARDENTE_FRUTAS));       
        return this.amostrasCombo;
    }

    public List<SelectItem> getTipoBebidaCombo(){        
        this.amostrasCombo  = new ArrayList<SelectItem>();
        this.amostrasCombo.add(new SelectItem(TipoBebida.SIMPLES));     
        this.amostrasCombo.add(new SelectItem(TipoBebida.COMPOSTA));        
        return this.amostrasCombo;
    }

Será que tem como você Gomes
ou alguém me dar uma ajuda?

[]'s.

[quote=ricardocomp]Jóia Gomes eu fiz o q vc me falou
dos generics e agora esta aparecendo a
seguinte mensagem no terminal:

INFO: WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=[severity=(INFO 0), summary=(Solicitação Registrada com sucesso!), detail=(Solicitação Registrada com sucesso!)]

Você Gomes ou alguém sabe o que pode ser esse Warning?

[]'s.[/quote]
Essa mensagem não é nada com o combo, é só uma FacesMessage que não vai poder ser exibida na tela (também é um probleminha, mas não tem nada a ver com esse).

Aliás, por essa mensagem parece que deu tudo certo… será que o problema não é que simplesmente a mensagem de sucesso não aparece ? Você chegou a conferir se o dado foi gravado onde devia?

Valeu Gomes muito Obrigado pela ajuda.
Deu certo aqui. :smiley:

Abração Gomes.