Pessoal, estou criando uma página onde ao lado esquerdo segue um menu com todos os títulos e a data de todas as notícias, e que quando a pessoa clicar em uma das datas, deve aparecer ao lado do menu o titulo, a data e a noticia.
Consegui preencher o menu com as datas e os títulos, porém quando clico em uma delas, não acontece nada.
No log do TomCat ele mostra o título e o ID da notícia clicada, porém na página não mostra nada.
Segue as duas classes que utilizei para fazer isso:
Classe Noticia.java
publicclassNoticia{privateintcodigo;privateStringtitulo;privateStringdata;privateStringnoticia;booleanvisible;publicNoticia(){}/*Getters e Setters (retirei para ocupar menos espaço)*/publicStringview(){visible=true;FacesContextcontext=FacesContext.getCurrentInstance();HttpServletRequestreq=(HttpServletRequest)context.getExternalContext().getRequest();NoticiaDAOdao=newNoticiaDAO();Notician=dao.getDados(req.getParameter("id"));System.out.println("TEste = "+req.getParameter("id"));System.out.println("\n\n ID="+n+"\n\n");if(n!=null){FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("Notícia",n);return"sucesso";}else{return"erro";}}}
Classe: NoticiaDAO.java
publicclassNoticiaDAO{booleanvisible;publicArrayList<Noticia>getNoticias(){ArrayList<Noticia>array=newArrayList<Noticia>();ResultSetrs=null;try{rs=Conexao.getResultSet("SELECT * FROM TBNoticias order by Data desc");System.out.println("Conectou no Array");while(rs.next()){Noticianoti=newNoticia();noti.setCodigo(rs.getInt("IDNoticia"));noti.setTitulo(rs.getString("Titulo"));;noti.setData(rs.getString("Data"));noti.setNoticia(rs.getString("Noticia"));//System.out.println("TESTE 2: "+ noti.getNoticia());array.add(noti);}}catch(Exceptionex){ex.printStackTrace();}returnarray;}publicNoticiagetDados(Stringcodigo){try{System.out.println("Conectou getDados");ResultSetrs=Conexao.getResultSet("select * from TBNoticias where IDNoticia = "+codigo);System.out.println("Clicou no codigo: "+codigo);if(rs.next()){Notician=newNoticia();if(n==null){returnnull;}n.setCodigo(rs.getInt("IDNoticia"));n.setTitulo(rs.getString("Titulo"));n.setData(rs.getString("Data"));n.setNoticia(rs.getString("Noticia"));returnn;}}catch(Exceptione){e.printStackTrace();}returnnull;}}
Tente ampliar o escopo do seu ice:form, para incluir a noticia isso talvez ja resolva.
Se não resolver adicione um <f:ajax execute="@form" event=“click” render="@form"/> dentro do commandLink da noticia.
Obs: Tome cuidado com funções como essa dentro de métodos getters e setters, o jsf não garante que esses métodos sejam chamados apenas uma vez e isso pode ocasionar em uma perda de performance significativa