Problemas com selectItems

8 respostas
J

Olá Pessoal estou tendo problemas com o selectItems.

O erro é o seguinte:
java.lang.IllegalArgumentException: Collection referenced by UISelectItems with binding ‘#{gerenciaEstado.estados}’ and Component-Path : {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /paginas/cadastroEstado.jsp][Class: javax.faces.component.html.HtmlForm,Id: _idJsp1][Class: javax.faces.component.html.HtmlPanelGrid,Id: _idJsp2][Class: javax.faces.component.html.HtmlSelectOneMenu,Id: _idJsp7][Class: javax.faces.component.UISelectItems,Id: _idJsp8]} does not contain Objects of type SelectItem

o meu jsp:

<h:selectOneMenu value="#{gerenciaEstado.estado.nome}">
<f:selectItems value="#{gerenciaEstado.estados}" />
</h:selectOneMenu>

o meu método:

public List getEstados() {

estados= new ArrayList();

estados.add(new SelectItem(Teste”, Teste));

return estados;	

}

alguem tem alguma dica aí?

8 Respostas

Leandro_BSB

Pelo que você apresentou, não há erros. Poste o faces-config e os códigos completos da jsp e da classe para darmos uma olhada.

[]s

Leandro

J

JSP:

<%@ taglib uri=“http://java.sun.com/jsf/html” prefix=“h”%>
<%@ taglib uri=“http://java.sun.com/jsf/core” prefix=“f”%>

Cadastro de Estado

<h:selectOneMenu value="#{gerenciaEstado.estado.nome}">
			<f:selectItems value="#{gerenciaEstado.estados}" />
		</h:selectOneMenu>

	</h:panelGrid>
	<h:commandButton action="#{gerenciaEstado.persisteEstado}"
		value="Salvar Dados" />
</h:form>

</f:view>

Código:

package br.com.aplijus.controle;

import java.util.ArrayList;
import java.util.List;

import javax.faces.model.SelectItem;

import javax.naming.InitialContext;

import javax.naming.NamingException;

import br.com.aplijus.dao.EstadoService;
import br.com.aplijus.modelo.Estado;

public class GerenciaEstado {

private Estado estado;

private EstadoService estadoService;

private String teste = "coiso";

private List estados;

@SuppressWarnings("unchecked")
public GerenciaEstado() {
	estado = new Estado();

	try {
		InitialContext ctx = new InitialContext();
		estadoService = (EstadoService) ctx
				.lookup("ApliJus/EstadoServiceBean/local");

	} catch (NamingException e) {
		e.printStackTrace();
	}
}

public List getEstados() {
	estados= new ArrayList();
	estados.add(new SelectItem("Teste", "Teste"));
return estados;	
}

public String persisteEstado() {
	estadoService.persisteEstado(estado);
	System.out.println("OK");
	return "erro";
}

public String getTeste() {
	return teste;
}

public void setTeste(String teste) {
	this.teste = teste;
}

public Estado getEstado() {
	return estado;
}

public void setEstado(Estado estado) {
	this.estado = estado;
}

public EstadoService getEstadoService() {
	return estadoService;
}

public void setEstadoService(EstadoService estadoService) {
	this.estadoService = estadoService;
}

}

faces-config.xml:

<?xml version="1.0"?> gerenciaEstado br.com.aplijus.controle.GerenciaEstado session /paginas/cadastroEstado.jsp erro /paginas/cadastroEstado.jsp
Leandro_BSB

Voce precisa implementar o método

public void setEstados(List estados) {
		this.estados = estados;
	}

[]s

Leandro

J

Mesmo implementando o método set continua aparecendo o mesmo erro.

Leandro_BSB

Na distribuição da Sun do JSF funcionou:

&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%&gt;
&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Cadastro de Estado&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;f:view&gt;
	&lt;h1&gt;&lt;h:outputText value="Cadastro de Estado" /&gt;&lt;/h1&gt;
	&lt;h:form&gt;
		&lt;h:panelGrid columns="2"&gt;

			&lt;h:selectOneMenu&gt;
				&lt;f:selectItems value="#{gerenciaEstado.estados}" /&gt;
			&lt;/h:selectOneMenu&gt;

		&lt;/h:panelGrid&gt;

	&lt;/h:form&gt;
&lt;/f:view&gt;
&lt;/body&gt;
package br.com.aplijus.controle;

import java.util.ArrayList;
import java.util.List;

import javax.faces.model.SelectItem;

public class GerenciaEstado {


	private List estados;

	public List getEstados() {
		estados = new ArrayList();
		estados.add(new SelectItem("Teste", "Teste"));
		return estados;
	}

	public void setEstados(List estados) {
		this.estados = estados;
	}

}

[]s

Leandro

J

Ué bom eu estou usando o myFaces

Leandro_BSB

Você tentou impletar a classe e a jsp do jeito que eu mandei?

[]s

Leandro

J

Mesmo tentando com o seu código não funcinou

Criado 7 de julho de 2006
Ultima resposta 7 de jul. de 2006
Respostas 8
Participantes 2