Problemas com selectItem jsf

Boa tarde pessoas, estou com um probleminha nao estou conseguindo popular meu selectOnemenu
segue o código:


         private SelectItem changeValue = new SelectItem();
	 public List<SelectItem> lista;

	public List<SelectItem> getLista() {
		
		List<SelectItem> lista = new LinkedList<SelectItem>();
		Estado estado;
		IDaoEstado idao = new DaoEstado();
		List<Estado> resultado = idao.ListarTodos();
		for (Estado teste : resultado) {

			SelectItem item = new SelectItem(teste.getCodigoUf(), teste
					.getSigla());
			lista.add(item);

		}
		return lista;
	}

	public void setLista(List<SelectItem> lista) {
		this.lista = lista;
	}

O arquivo jsf


<h:outputText value="#{msg.estado}"></h:outputText>
			
			<h:selectOneMenu value="#{Cidade.cidade.changeValue}" style=" width : 141px;">    
            <f:selectItems value="#{cidade.lista}"/>    
            </h:selectOneMenu>  

O maldito Erro


javax.servlet.ServletException: Expected a child component type of UISelectItem/UISelectItems for component type javax.faces.SelectOne(j_id_jsp_961804988_10pc4).  Found null.
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)


root cause 

java.lang.IllegalArgumentException: Expected a child component type of UISelectItem/UISelectItems for component type javax.faces.SelectOne(j_id_jsp_961804988_10pc4).  Found null.
	


Alguem pode ajudar pois ja pesquisei aqui no forum e no google e nada ate agora :cry:
Abraços

O erro deve ser o tipo de dados do changevalue

 private SelectItem changeValue = new SelectItem();  

Você está colocando uma String teste.getSigla() e está pegando um SelectItem.
Muda seu atributo changeValue para String

public List getLista() {

List lista = new LinkedList();

Estado estado;

IDaoEstado idao = new DaoEstado();

List resultado = idao.ListarTodos();

for (Estado teste : resultado) {

// aqui na lista vc esta passando uma String com id e tbm cm label(getCodigoUf() e getSigla())

SelectItem item = new SelectItem(teste.getCodigoUf(), teste.getSigla());

lista.add(item);

}

return lista;

}

para solucionar esse erro vc pode mudar o seu atributo
private SelectItem changeValue = new SelectItem(); para
private String changeValue; ou para
private HtmlSelectOneMenu changeValue; mas preste atenCao…
com o atributo tipo String use value no jsf e cm HtmlSelectOneMenu user binding

String

<h:selectOneMenu value="#{Cidade.cidade.changeValue}" style=" width : 141px;">

<f:selectItems value="#{cidade.lista}"/>

</h:selectOneMenu>

HtmlSelectOneMenu

<h:selectOneMenu binding="#{Cidade.cidade.changeValue}" style=" width : 141px;">

<f:selectItems value="#{cidade.lista}"/>

</h:selectOneMenu>

para poder pegar o valor caso user o HtmlSelectOneMenu, use o metodo getValue().toString() dsse cmponente…

Revivendo o POST

O mesmo erro…

private SelectItem[] disciplinas;
private SelectItem[] polos;

ArrayList<Disciplina> ld;
ArrayList<Polo> lp;

atualizaDisciplinas() - Funciona!

if (tipo == 1) {
				// System.out.println(curso);

				int codCurso = Integer.parseInt(curso);
				cur.setCodCurso(codCurso);
				ld = DBData.getDisciplinasDoCursoEmAvaliacao(pes, cur);

				disciplinas = new SelectItem[ld.size() + 1];
				int j = 0;
				disciplinas[j++] = new SelectItem("s", "Selecione a Disciplina");
				for (Disciplina disciplina : ld) {
					disciplinas[j++] = new SelectItem(disciplina.getCodigo(),
							disciplina.getNome());
				}
				disciplina = "s";
			}

atualizaPolos() - Eis o problema. O método executa normalmente e popula o array, mas o jsf nao encontra.

if (tipo == 2) {
				System.out.println("Inicializa Polos");

				int codCurso = Integer.parseInt(curso);
				cur.setCodCurso(codCurso);
				lp = DBData.getPolo(pes, cur);

				polos = new SelectItem[lp.size() + 1];
				int j = 0;
				polos[j++] = new SelectItem("s", "Selecione o Pólo");
				for (Polo polo : lp) {
					polos[j++] = new SelectItem(polo.getCodigo(), polo
							.getNome());
				}
				for (int i = 0; i < polos.length; i++) {
					System.out.print(polos[i].getValue() + " " + polos[i].getLabel());
				}

JSF - listagem.disciplinas funciona corretamente, e está feito exatamente do mesmo jeito que polos

<h:selectOneMenu value="#{listagem.disciplina}" id="comboDisciplinas">
				<f:selectItems value="#{listagem.disciplinas}" />
				<a4j:support event="onchange" action="#{listagem.atualizaPolo}"
					reRender="comboPolos"></a4j:support>
			</h:selectOneMenu>

			
			<h:selectOneMenu value="#{listagem.polo}" id="comboPolos">
				<f:selectItems value="#{listagem.polos}" />
			</h:selectOneMenu>

Erro
Expected a child component type of UISelectItem/UISelectItems for component type javax.faces.SelectOne(comboPolos). Found null.

Alguém sabe porque o JSF nao consegue pegar?

Grato