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"/>
<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:
-
Defina um id para seus componentes ( <h:selectManyCheckbox id=“comboBlaBlaBla”… ), assim ele aparece na mensagem do log identificando melhor o componente com erro
-
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.
- 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. 
Abração Gomes.