Problemas ao carregar formulário com campo selectOneMenu

3 respostas
austre

Fiz uma busca a respeito do problema que estou enfrentando e só encontrei dois tópicos, os quais estão listados abaixo:

http://www.guj.com.br/posts/preList/31673/169737.java
http://www.guj.com.br/posts/preList/75389/411202.java

O primeiro é o que está mais perto do meu problema, mas o criador do tópico resolveu o problema e não postou a solução. A mensagem de erro apresentada é a seguinte:

Value binding '#{SistemaBean.todasRegionais}' of UISelectItem : {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /Sistema/form.jsp][Class: javax.faces.component.html.HtmlForm,Id: _idJsp0][Class: javax.faces.component.html.HtmlSelectOneMenu,Id: regionalSistema][Class: javax.faces.component.UISelectItem,Id: _idJsp1]} does not reference an Object of type SelectItem javax.faces.webapp.FacesServlet.service(FacesServlet.java:152)

Passei esta tarde de domingo tentando encontrar a solução deste meu problema e ainda não consegui.
Espero que alguém possa me ajudar.

Desde já, obrigado!

:arrow: Anexos

Código da Página
<%@ include file="../WEB-INF/header.inc" %>

<f:view>
    <h:form>
        <h:inputText id="descricao" value="#{SistemaBean.sistema.descricao}" />
        <h:selectOneMenu id="regionalSistema">
            <f:selectItem value="#{SistemaBean.todasRegionais}" />
        </h:selectOneMenu>
        <h:commandButton value="Cadastrar" action="#{SistemaBean.cadastrar}"/>
        <h:commandButton value="Cancelar" action="#{SistemaBean.cancelar}"/>
        <h:inputHidden id="idSistema" value="#{SistemaBean.sistema.id}" />
    </h:form>
</f:view>
Código do Bean
public class SistemaBean {

    private Sistema sistema = new Sistema();
    private GerenciadorSistema gerenciador;
    private DataModel model;
    private String mensagem;
    
    public SistemaBean() throws Exception{
        gerenciador = new GerenciadorSistema();
        sistema.setRegional(new Regional());
    }
.
.
.
    public List getTodasRegionais() throws Exception{
        List regionaisS = new ArrayList();
        List<Regional> regionais = new GerenciadorRegional().retornarRegional();
        for (Regional elem : regionais) {
            String id = Integer.toString(elem.getId());
            regionaisS.add(new SelectItem(id, elem.getDescricao()));
        }
        return regionaisS;
    }
.
.
.
}
Código do GerenciadorRegional
public class GerenciadorRegional {

    private RegionalDaoImpl dao;
    
    public GerenciadorRegional() throws Exception{
        dao = new RegionalDaoImpl();
    }
.
.
.
    public List<Regional> retornarRegional() throws Exception{
        return dao.retrieveAll();
    }
.
.
.
}
Código do RegionalDaoImpl
public class RegionalDaoImpl extends GeralDaoImpl implements RegionalDao{

    public List<Regional> retrieveAll() {
        Session s = getSession();
        Criteria c = s.createCriteria(Regional.class);
        return c.list();
    }
}

3 Respostas

gigicantador

Troque <f:selectItem por ><f:selectItems

O primeiro você usa quando vai definir os itens do select um por um na página e o segundo quando esta passando uma lista de itens.

&gt;&lt;h:selectOneMenu id="regionalSistema"&gt; &lt;f:selectItems value="#{SistemaBean.todasRegionais}" /&gt; &lt;/h:selectOneMenu&gt;

austre

Obrigado!

Muito bem observado. Bendito “s”

:oops:

austre

Galera,

Quem tiver como dar uma olhada no final da última página deste tópico http://www.guj.com.br/posts/list/15/50249.java eu agradeço. É um problema com os danados dos SelecOneMenu dependentes.

Obrigado!

Criado 22 de junho de 2008
Ultima resposta 25 de jun. de 2008
Respostas 3
Participantes 2