Erro ao popular selectonemenu

1 resposta
J

Pessoal estou recebendo o seguinte erro ao tentar popular um selectonemenu via Bean…

org.apache.catalina.core.StandardWrapperValve invoke

SEVERE: Servlet.service() for servlet Faces Servlet threw exception

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer

at com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:820)

at com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:280)

nunca vi algo parecido esta dando um erro casting…ele roda certinho busca todos os itens sai da classe ao voltar pra pagina o erro ocorre…

Se alguem puder ajudar…obrrigado desde já…

na pagina xhtml

<h:panelGrid border=“0” columns=“3”>
<h:selectOneMenu id =“lista” value="#{Acesso.regra}"
required=“true” requiredMessage=“Escolha pelo menos um item” size=“10” >
<f:selectItem itemValue=“1”/>
<f:selectItems id=“item” value="#{Acesso.regras}" />
</h:selectOneMenu>
</h:panelGrid>

na classe…
na classe que retorna …os items.

public List<SelectItem> getRegrasToCombo() throws Exception{

int i=0;

Acesso regra = new Acesso();

List<RegraAcesso> dAcesso = new ArrayList<RegraAcesso>();

dAcesso = regra.findAll();

for(Acesso ac: dAcesso){

if (ac!=null){

regras.add(new SelectItem(ac.getId(), ac.getNome()));	

}

}

return regras;

}

1 Resposta

danielfigueiredoc

Eu acho, não tenho certeza, nesse trecho do seu código:

<h:selectOneMenu id ="lista" value="#{Acesso.regra}"

você referencia o objeto, como o selectOneMenu passa o que você disse que era identificador pra ele:

regras.add(new SelectItem(ac.getId(), ac.getNome()));

ele ta tentando jogar um integer no objeto Regra. Dai o erro, tenta mudar o value para o seguinte:

value="#{regra.id}"

Espero ter ajudado

Abraço!

Criado 11 de setembro de 2009
Ultima resposta 11 de set. de 2009
Respostas 1
Participantes 2