Duvida[Resolvido]

Opa, galera!!!

Eu tow com uma duvida no combo, eu tou querendo pega os valores do banco e jogar no combobox só que dá um erro

 <rich:comboBox id="combomostra" >
    <f:selectItems  value="#{pegandoBd.mostranome}"    />
    </rich:comboBox>

E dá esse erro.

An Error Occurred:
Exception while calling encodeEnd on component : {Component-Path : [Class: org.ajax4jsf.component.AjaxViewRoot,ViewId: /inserindocombo.jsp][Class: org.richfaces.component.html.HtmlComboBox,Id: combomostra]}

Caused by:
java.lang.IllegalArgumentException - Value 'javax.servlet.jsp.jstl.sql.ResultImpl' of tag <selectItems> attribute is incorrect.

O que retorna o seu método mostranome? Alias o método tem que ser getMostranome…

ele ta getmostra nome e retorna a result


public Result getMostranome() throws SQLException{
	   PreparedStatement st;
	   ResultSet rs = null;
	   Connection conn = Ascessando.getConnection();
	   try{
		st = conn.prepareStatement(" SELECT nome FROM cadastro");
		rs = st.executeQuery();
		conn.close();
		
	   } catch (SQLException e) {
		   e.printStackTrace();
	   }
		return ResultSupport.toResult(rs);
   }

ta assim no bean

Bom, realmente eu não sei se da pra fazer dessa forma, eu faço com o método retornando um List de javax.faces.model.SelectItem

vc ja usou com o

while (result.next()){
Nome = result.getString(" Nome");
.....
}

Não, eu já usei assim:

List<SelectItem>lista = new ArrayList<SelectItem>();

//aqui vem os valores do banco
lista.add(new SelectItem("1", "valor1") );
lista.add(new SelectItem("2", "valor2") );

return lista

eu fiz assim só que não mostra o valor que ta no banco

public List<SelectItem> getList() throws SQLException{
	PreparedStatement st;
	Connection Conn = Ascessando.getConnection();
	 List<SelectItem> opcao = new ArrayList<SelectItem>();
	try{
		 st = Conn.prepareStatement("SELECT nome FROM teste");
		 st.execute();
		 opcao.add(new SelectItem("1","?"));
		 opcao.add(new SelectItem("2","?"));
		System.out.println("Selecionado com Sucesso");
		st.close();
		Conn.close();
	}catch (Exception e) {
		e.printStackTrace();
	}

	return opcao;
}

Não é bem assim.

você deve fazer um

e depois varrer o resultado

while (rs.next()){ opcao.add(new SelectItem("1", rs.getString("nome") ) ); }
o código “1” também deveria vir de uma coluna do banco. Faz da mesma forma que o nome.

vlw, obrigado!!! pegou