comboBox dinamico JSF

pessoal vc podem me ajudar a criar um comboBox dinamico, recebe uma lista estados por exmplo, fazendo uma consulta no banco de dados.

  • uso hibernate

valew

É mais ou menos isso:

Um método para trazer uma List do seu Banco e outro para Popular o Select

No Backbean:

	public List<SelectItem> getTodosEstados() {
		List<Estados> listaEstados = getEstadosDoBanco();
		List<SelectItem> listaSelect = new ArrayList<SelectItem>();
		
		for(Estado e : listaEstados){
			listaSelect.add(new SelectItem(new Integer(e.getId()), e.getNome()));
		}
		
		return listaSelect;
	}

No JSF:

<h:selectOneMenu value="#{Estado.id}">
    <f:selectItems value="#{Estado.todosEstados}" />
</h:selectOneMenu>

Gbzao! obrigado pela ajuda, mas não consegui.
Olha como estao minhas classes.

Meu bean:


public class EstadoManager {

	public List<SelectItem> getTodosEstados() {

		List<Estado> listaEstados = EstadoDao.ListaEstado();
		List<SelectItem> listaSelect = new ArrayList<SelectItem>();

		for (Estado e : listaEstados) {
			listaSelect.add(new SelectItem(new Integer(e.getID_UF()), e
					.getDS_UF()));
		}

		return listaSelect;
	}
}

meu dao:


public class EstadoDao {

	public static List<Estado> ListaEstado() {

		System.out.println("Open ComboBox...");
		Session s = HibernateUtil.getSession();
		System.out.println("Done. ComboBox");

		String sql = "SELECT         * " + "   FROM           GE_ESTADO ";

		SQLQuery qryEstado = s.createSQLQuery(sql);

		qryEstado.setResultTransformer(Transformers.aliasToBean(Estado.class));
		return qryEstado.list();
	}
}

meu jsf:

<h:selectOneMenu>
			<f:selectItems value="#{estadoManager.todosEstados}" />
		</h:selectOneMenu>

erro:


HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: /estadoNfe.jsp(17,2) '#{estadoManager.todosEstados}' Error reading 'todosEstados' on type br.com.fitsistemas.manager.EstadoManager
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:147)
	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:256)
	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:362)
	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:488)

root cause

org.apache.jasper.el.JspELException: /estadoNfe.jsp(17,2) '#{estadoManager.todosEstados}' Error reading 'todosEstados' on type br.com.fitsistemas.manager.EstadoManager
	org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:107)
	org.richfaces.component.html.HtmlComboBox.getSuggestionValues(HtmlComboBox.java:1657)
	org.richfaces.renderkit.ComboBoxBaseRenderer.encodeItems(ComboBoxBaseRenderer.java:80)
	org.richfaces.renderkit.html.ComboBoxRenderer.doEncodeEnd(ComboBoxRenderer.java:556)
	org.richfaces.renderkit.html.ComboBoxRenderer.doEncodeEnd(ComboBoxRenderer.java:574)
	org.ajax4jsf.renderkit.RendererBase.encodeEnd(RendererBase.java:135)
	javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:833)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:896)
	javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
	javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:809)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
	com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:244)
	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:175)
	org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
	org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:189)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:147)
	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:256)
	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:362)
	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:488)

root cause

java.lang.NumberFormatException: For input string: "SP"
	java.lang.NumberFormatException.forInputString(Unknown Source)
	java.lang.Integer.parseInt(Unknown Source)
	java.lang.Integer.<init>(Unknown Source)
	br.com.fitsistemas.manager.EstadoManager.getTodosEstados(EstadoManager.java:19)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	java.lang.reflect.Method.invoke(Unknown Source)
	javax.el.BeanELResolver.getValue(BeanELResolver.java:62)
	javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
	com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64)
	org.apache.el.parser.AstValue.getValue(AstValue.java:97)
	org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
	org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101)
	org.richfaces.component.html.HtmlComboBox.getSuggestionValues(HtmlComboBox.java:1657)
	org.richfaces.renderkit.ComboBoxBaseRenderer.encodeItems(ComboBoxBaseRenderer.java:80)
	org.richfaces.renderkit.html.ComboBoxRenderer.doEncodeEnd(ComboBoxRenderer.java:556)
	org.richfaces.renderkit.html.ComboBoxRenderer.doEncodeEnd(ComboBoxRenderer.java:574)
	org.ajax4jsf.renderkit.RendererBase.encodeEnd(RendererBase.java:135)
	javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:833)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:896)
	javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
	javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:809)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
	com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:244)
	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:175)
	org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
	org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:189)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:147)
	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:256)
	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:362)
	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:488)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.
  • o jsf tem um componente novo, comboBox. teria alguma solução para usar ele?

obrigado.

consegui… alterei o new Integer para new String.

certo:

for (Estado e : listaEstados) {
			listaSelect.add(new SelectItem(new String(e.getID_UF()), e
					.getDS_UF()));
		}
java.lang.NumberFormatException: For input string: "SP"  

O getID_UF() é a sigla do estado ou o código?
Porque você está fazendo:

new Integer(e.getID_UF());

O erro está nesse cast, dê uma olhada…