Boa Tarde Galera,
Poderiam dar uma olhada nesse código abaixo?
Estou com problemas com o selectOneMenu do primefaces, antes da página aparecer, ocorre este erro:
ava.lang.ClassCastException: java.lang.String cannot be cast to javax.faces.model.SelectItem
at org.primefaces.renderkit.InputRenderer.getSelectItems(InputRenderer.java:47)
at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeMarkup(SelectOneMenuRenderer.java:68)
at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeEnd(SelectOneMenuRenderer.java:62)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304)
at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:105)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:55)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:43)
at org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRe
Olha os códigos:
xhtml
<p:selectOneMenu id="oneMenuProjeto" value="#{pendenciaMB.projetoSelecionado}" converter="br.com.gerenciadorPendencia.web.converter.ProjetoConverter" title="Selecione o projeto a qual esta pendência pertencerá">
<f:selectItem value="Selecione ..." itemValue=""/>
<f:selectItems value="#{pendenciaMB.listaProjetos}" var="p" itemValue="#{p.id}" itemLabel="#{p.nome}"/>
</p:selectOneMenu>
ManagedBean
package br.com.gerenciadorPendencia.web.managedBean;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import br.com.gerenciadorPendencia.entidade.Projeto;
import br.com.gerenciadorProjeto.business.projeto.ProjetoBusinessRemote;
@ManagedBean(name = "pendenciaMB")
@ViewScoped
public class PendenciaManagedBean {
private List<Projeto> listaProjetos;
private Projeto projetoSelecionado;
@EJB
private ProjetoBusinessRemote projetoBusiness;
public PendenciaManagedBean() {
}
/**
* @return
*/
public List<Projeto> getListaProjetos() {
try {
for (Projeto projeto : projetoBusiness.listar()) {
listaProjetos.add(projeto);
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
return listaProjetos;
}
public Projeto getProjetoSelecionado() {
return projetoSelecionado;
}
public void setProjetoSelecionado(Projeto projetoSelecionado) {
this.projetoSelecionado = projetoSelecionado;
}
}
Converter
package br.com.gerenciadorPendencia.web.converter;
import javax.ejb.EJB;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import br.com.gerenciadorProjeto.business.projeto.ProjetoBusinessRemote;
@FacesConverter("br.com.gerenciadorPendencia.web.converter.ProjetoConverter")
public class ProjetoConverter implements Converter {
@EJB
private ProjetoBusinessRemote projetoBusiness;
@Override
public Object getAsObject(final FacesContext context, final UIComponent component, final String value) {
try {
return this.projetoBusiness.selecionar(Integer.parseInt(value));
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
public String getAsString(final FacesContext context, final UIComponent component, final Object value) {
return value.toString();
}
}
Não acho o erro, será que seria o Converter?
Agradeço a atenção