Pessoal estou fazendo um <h:selectOneMenu> , e quando tento selecionar o objeto trago pela lista ele me apresenta o seguinte erro .
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:154)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:260)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:366)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:493)
root cause
java.util.NoSuchElementException
javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:117)
javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:144)
javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:49)
javax.faces.component.UISelectOne.matchValue(UISelectOne.java:164)
javax.faces.component.UISelectOne.validateValue(UISelectOne.java:137)
javax.faces.component.UIInput.validate(UIInput.java:867)
javax.faces.component.UIInput.executeValidate(UIInput.java:1065)
javax.faces.component.UIInput.processValidators(UIInput.java:666)
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)
org.ajax4jsf.component.UIAjaxForm.processValidators(UIAjaxForm.java:80)
org.ajax4jsf.component.AjaxViewRoot$3.invokeContextCallback(AjaxViewRoot.java:435)
org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:235)
org.ajax4jsf.component.AjaxViewRoot.processValidators(AjaxViewRoot.java:451)
com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:154)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:260)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:366)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:493)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.16 logs.
O Código está assim :
Controle
public List<SelectItem> getListar() throws Exception {
ad.abrirConexao();
List site = ad.listarParametrosPorClasse(parametroViter);
ArrayList<SelectItem> listarParametros = new ArrayList<SelectItem>();
for (int i = 0; i < site.size(); i++) {
SelectItem parametro1 = new SelectItem();
ParametroViter e = (ParametroViter) site.get(i);
parametro1.setValue(e.getFundos().getId());
parametro1.setLabel(e.getFundos().getNmFundo());
listarParametros.add(parametro1);
}
ad.fecharConexao();
return listarParametros;
}
DAO
public ArrayList<ParametroViter> listarParametrosPorClasse(ParametroViter objeto) throws SQLException {
ArrayList lista = new ArrayList<ParametroViter>();
Statement stmt = conexao.createStatement();
ParametroViter parametroViter = null;
Fundos fundos = null;
ResultSet rst = null;
try {
query = "SELECT DISTINCT \"SMFTB019_PARAMETROS_VITER\".\"FUNDOS_SMFTB019\", \"SMFTB010_FUNDOS\".\"NOME_FUNDO_SMFTB010\", " +
"\"SMFTB019_PARAMETROS_VITER\".\"DESCRICAO_RISCO_SMFTB019\"" +
"FROM \"SMFTB019_PARAMETROS_VITER\" " +
"INNER JOIN \"SMFTB010_FUNDOS\" ON \"SMFTB019_PARAMETROS_VITER\".\"FUNDOS_SMFTB019\"=\"SMFTB010_FUNDOS\".\"PK_SMFTB010\" " +
"WHERE \"CLASSE_CVM_SMFTB019\" = " + objeto.getClasseCVM().getCodigo() + " ";
rst = stmt.executeQuery(query);
while (rst.next()) {
parametroViter = new ParametroViter();
fundos = new Fundos();
fundos.setId(rst.getInt(1));
fundos.setNmFundo(rst.getString(2));
parametroViter.setDescricao(rst.getString(3));
parametroViter.setFundos(fundos);
lista.add(parametroViter);
}
rst.close();
stmt.close();
} catch (SQLException sqlex) {
this.codMensagem = Integer.parseInt(sqlex.getSQLState());
rst.close();
stmt.close();
}
return lista;
}
public ParametroViter pesquisaParametroPorCodigoDoFundo(ParametroViter objeto) throws Exception {
ParametroViter parametroViter = new ParametroViter();
Statement stmt = conexao.createStatement();
ResultSet rst = null;
if(objeto == null)
throw new Exception("O valor passado não pode ser nulo");
try {
query = "SELECT DISTINCT \"SMFTB019_PARAMETROS_VITER\".\"FUNDOS_SMFTB019\", \"SMFTB010_FUNDOS\".\"NOME_FUNDO_SMFTB010\", " +
"\"SMFTB019_PARAMETROS_VITER\".\"DESCRICAO_RISCO_SMFTB019\" "+
"FROM \"SMFTB019_PARAMETROS_VITER\" " +
"INNER JOIN \"SMFTB010_FUNDOS\" ON \"SMFTB019_PARAMETROS_VITER\".\"FUNDOS_SMFTB019\"=\"SMFTB010_FUNDOS\".\"PK_SMFTB010\" " +
"WHERE \"CLASSE_CVM_SMFTB019\" = " + objeto.getFundos().getId() + " ";
rst = stmt.executeQuery(query);
while (rst.next()) {
Fundos fundos = new Fundos();
MovCota movCota = new MovCota();
TaxaADM taxaADM = new TaxaADM();
fundos.setId(rst.getInt(1));
fundos.setNmFundo(rst.getString(2));
parametroViter.setDescricao(rst.getString(3));
movCota.setVlMinAplicIni(rst.getDouble(4));
taxaADM.setTaxa(rst.getDouble(5));
parametroViter.setFundos(fundos);
parametroViter.setMovCota(movCota);
parametroViter.setTaxaADM(taxaADM);
}
rst.close();
stmt.close();
} catch (SQLException sqlex) {
this.codMensagem = Integer.parseInt(sqlex.getSQLState());
rst.close();
stmt.close();
}
return parametroViter;
}
VISAO
<h:selectOneMenu id="listaFundos2" value="#{ManterParametrosViter.parametroViter.fundos.id}" styleClass="edit" style="width:300px;">
<f:selectItem itemLabel="-- Selecione o Fundo --" itemValue=""/>
<f:selectItems value="#{ManterParametrosViter.listar}"/>
<a4j:support id="supListaFundos2" event="onchange" reRender="frmCadastroParametrosViter"/>
</h:selectOneMenu>
EDIT - Por favor use as tags [ code ]