Olá amigos. Eu estava desenvolvendo uma aplicação com JSF com ajax e richfaces. Dai ontem me caiu a ficha de colocar o EJB também. MAASS… assim que coloquei o arquivo jsf não consegue enxergar a classe de dados e só enxerga o EJB que está no meio. Por exemplo tenho um metodo que me retorna uma lista de coisas. No JSP eu chamo o EJB que faz uma requisição ao meu DAO que por fim o DAO retorna uma List a qual não consigo obter de jeito nenhum no meu JSP. Diz o seguinte erro:
Grave: Servlet.service() for servlet [Faces Servlet] in context with path [/Ideas3] threw exception [/admin/listaSprint.jsp(20,5) '#{not empty sprintBean.sprints }' Error reading 'sprints' on type beans.SprintBean] with root cause.
Mas quando eu coloco o metodo de busca no EJB o JSP recebe os dados. Por isso não entendo, se eu chamo o metodo do DAO ele nem me retorna algo.
Opa, quase me esqueço: Aqui vão minhas classes DAO e EJB + o JSP:
Classe DAO:
packagedados;importjava.util.ArrayList;importjava.util.List;importjavax.ejb.Stateless;importjavax.faces.component.UIData;importjavax.faces.event.ValueChangeEvent;importutil.ConexaoMySql;importbasicas.Sprint;importbasicas.Status;@StatelesspublicclassSprintDAO{privateSprintsprint=newSprint();privateList<Sprint>sprints=newArrayList<Sprint>();privateUIDataobjDataTableSprint;ConexaoMySqlcon=newConexaoMySql();@SuppressWarnings("static-access")publicStringsalvar(Sprintsprint){try{if(sprint.getId()>0){con.conecta();con.executeSql("updatesprintsetnome='"+sprint.getNome()+"',descricao='"+sprint.getDescricao()+"',status='"+sprint.getStatus()+"'whereid="+sprint.getId());}else{con.conecta();con.executeSql("insertintosprint(nome,descricao,status)values('"+sprint.getNome()+"','"+sprint.getDescricao()+"','"+sprint.getStatus()+"')");}}catch(Exceptione){System.out.println(e);}finally{con.fecharCon();}returnnull;}// public String alterar() {// sprint = (Sprint) objDataTableSprint.getRowData();// return "alterarSprint";// }//// public List<Sprint> listarTodos() {// return sprints;// }publicSprintgetSprint(){returnsprint;}publicvoidsetSprint(Sprintsprint){this.sprint=sprint;}@SuppressWarnings("static-access")publicList<Sprint>getSprints(){sprints.clear();try{con.conecta();con.rs=con.executeSqlQuery("select * from sprint");while(con.rs.next()){sprints.add(newSprint(con.rs.getInt("id"),con.rs.getString("nome"),con.rs.getString("descricao"),con.rs.getString("status")));}}catch(Exceptione){System.out.println(e);}finally{con.fecharCon();}returnsprints;}publicvoidsetSprints(List<Sprint>sprints){this.sprints=sprints;}@SuppressWarnings("static-access")publicvoidvalueChangeMethod(ValueChangeEvente,UIDataobjDataTableSprint){sprint=(Sprint)objDataTableSprint.getRowData();System.out.println(sprint.getStatus());try{con.conecta();con.executeSql("update sprint set status = '"+e.getNewValue().toString()+"' where id = "+sprint.getId());}catch(Exceptionex){System.out.println(ex);}finally{con.fecharCon();}}publicStringoutcome(){return"result";}publicStringlimpar(){sprint=newSprint();returnnull;}}