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
pessoal vc podem me ajudar a criar um comboBox dinamico, recebe uma lista estados por exmplo, fazendo uma consulta no banco de dados.
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.
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…