Erro java.util.NoSuchElementException - Resolvido

7 respostas
vivi_grieco

Tenho um combo que é populado dinamicamente.
seleciono o registro dele, e quando é dado o submit na página, ocorre esse erro:

...
Caused by: java.util.NoSuchElementException
	at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:130)
	at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:157)
	at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:61)
	at javax.faces.component.SelectUtils.matchValue(SelectUtils.java:82)
	at javax.faces.component.UISelectOne.validateValue(UISelectOne.java:144)
...

Não entra no método do me botão, já ocorre o erro.
O que pode ser?

7 Respostas

anderson.bonavides

Cola teu código aqui por favor, assim fica mais fácil de ajudar.

vivi_grieco

O código que popula o combo:

operadoresList = new ArrayList<SelectItem>();
        operadoresList.add(new SelectItem(null, "Selecionar"));
        List<UsuarioTO> usuarioTOList = UsuarioBD.getInstance().buscarOperadoresPorCNPJFilial(Long.valueOf(this.getNrCNPJ()), this.getNrFilial());
        for (UsuarioTO item : usuarioTOList) {
            operadoresList.add(new SelectItem(item.getCodUsuario(), item.getCodUsuario() + " - " + item.getNome()));
        }

O código do combo:

<h:selectOneMenu id="operadoresSel" value="#{movimentoretaguarda_abrirMovimentoCaixaRet.idOperador}">
	<f:selectItems value="#{movimentoretaguarda_abrirMovimentoCaixaRet.operadoresList}" />
</h:selectOneMenu>
anderson.bonavides

Faz o teste para ver se assim funciona:

operadoresList = new ArrayList<SelectItem>();
        operadoresList.add(new SelectItem(null, "Selecionar"));
        List<UsuarioTO> usuarioTOList = UsuarioBD.getInstance().
                                 buscarOperadoresPorCNPJFilial(Long.valueOf(this.getNrCNPJ()), this.getNrFilial());
        for (UsuarioTO item : usuarioTOList) {
            operadoresList.add(new SelectItem(item, 
                                        item.getCodUsuario() + " - " + item.getNome()));
        }
vivi_grieco

Olá Anderson,
mesmo com o código que você passou, continuou ocorrendo o mesmo erro.

anderson.bonavides

Faz as modificações ai:

Teu método:

operadoresList = new ArrayList&lt;SelectItem&gt;(); List&lt;UsuarioTO&gt; usuarioTOList = UsuarioBD.getInstance(). buscarOperadoresPorCNPJFilial(Long.valueOf(this.getNrCNPJ()), this.getNrFilial()); for (UsuarioTO item : usuarioTOList) { operadoresList.add(new SelectItem(item, item.getCodUsuario() + " - " + item.getNome())); }

Tua página:

&lt;h:selectOneMenu id="operadoresSel" value="#{movimentoretaguarda_abrirMovimentoCaixaRet.idOperador}"&gt; &lt;f:selectItem itemLabel="Selecione" itemValue="Selecione" /&gt; &lt;f:selectItems value="#{movimentoretaguarda_abrirMovimentoCaixaRet.operadoresList}" /&gt; &lt;/h:selectOneMenu&gt;

vivi_grieco

Anderson,
Obrigada pela ajuda. Mesmo com a modificação que você sugeriu, o erro continuou.
Utilizei a tag do tomahawk abaixo e funcionou. Obrigada!

&lt;t:saveState id="saveState1"
					value="#{movimentoretaguarda_abrirMovimentoCaixaRet.operadoresList}" /&gt;
L
try { operadoresList = new ArrayList();

operadoresList.add(new SelectItem(null, Selecionar));

List usuarioTOList = UsuarioBD.getInstance().buscarOperadoresPorCNPJFilial(Long.valueOf(this.getNrCNPJ()), this.getNrFilial());

for (UsuarioTO item : usuarioTOList) {

operadoresList.add(new SelectItem(item.getCodUsuario(), item.getCodUsuario() + " - " + item.getNome()));

}

} catch (NoSuchElementException e) {

System.out.println (Colocar aqui a escessão que você precisa!!!)

}

//Só fiz o tratamento para esta excessão que esta aparecendo quando você tenta rodar o codigo, ela é unchecked e nao precisa ser tratada, pois ela deriva da classe RuntimeException.

Criado 29 de julho de 2010
Ultima resposta 17 de out. de 2012
Respostas 7
Participantes 3