Dúvida IceFaces

5 respostas
Thiago_Siqueira
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
public class Noticia {

    private int codigo;
    private String titulo;
    private String data;
    private String noticia;
    boolean visible;

    public Noticia() {
    }

    /*Getters e Setters (retirei para ocupar menos espaço)*/

    public String view() {

        visible = true;

        FacesContext context = FacesContext.getCurrentInstance();

        HttpServletRequest req = (HttpServletRequest) context.getExternalContext().getRequest();

        NoticiaDAO dao = new NoticiaDAO();

        Noticia n = 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
public class NoticiaDAO {

 boolean visible;

    public ArrayList<Noticia> getNoticias() {

	ArrayList<Noticia> array = new ArrayList<Noticia>();

	ResultSet rs = null;

        try {

            rs = Conexao.getResultSet("SELECT * FROM TBNoticias order by Data desc");
            System.out.println("Conectou no Array");
            while(rs.next()) {

                Noticia noti = new Noticia();

                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 (Exception ex) {
            ex.printStackTrace();
        }

	return array;
    }

    public Noticia getDados(String codigo) {

	try {
            System.out.println("Conectou getDados");
	    ResultSet rs = Conexao.getResultSet("select * from TBNoticias where IDNoticia = "+ codigo);
            System.out.println("Clicou no codigo: " + codigo);
	    if(rs.next()) {

		Noticia n = new Noticia();

		if(n == null) {

		    return null;
		}
                n.setCodigo(rs.getInt("IDNoticia"));
                n.setTitulo(rs.getString("Titulo"));
                n.setData(rs.getString("Data"));
                n.setNoticia(rs.getString("Noticia"));
                
		return n;
	    }

	} catch(Exception e) {

	    e.printStackTrace();
	}

	return null;
    }

}

5 Respostas

MelissaN

Ah! Eu tb preciso de ajuda nisso! D: alguém aew sabe??

Thiago_Siqueira

Ninguem pessoal?

Ygor

Cade o código da pagina?

Thiago_Siqueira
<table background="imagem/fundotabela.png" width="880" border="0">
                            <tr>
                                <td valign="top" width="177"><!-- Menu lateral -->
                                    <ice:outputText styleClass="data" style="font-size:16px;" value="Todas as notícias"/>

                                    <ice:form partialSubmit="true">

                                        <ice:dataTable border="0" width="100%" scrollable="true" scrollHeight="500px" id="tabela0" style="left: 440px; top: 50px; border-color: #FFFFFF; border-bottom-color:white; border-left-color:white; border-right-color: #FFFFFF; border-top-color:white;" headerClasses="cabecalho" columnClasses="primeiro" var="item" value="#{NoticiaDAO.noticias}">

                                            <ice:column style="width:100%">
                                                <ice:commandLink style="text-decoration: none;" action="#{Noticia.view}"><ice:outputText styleClass="data" value="#{item.data}"/><br/>
                                                    <ice:outputText styleClass="descricao" value="#{item.titulo}"/>
                                                    <f:param id="id" name="id" value="#{item.codigo}"/>
                                                </ice:commandLink>
                                            </ice:column>

                                        </ice:dataTable>

                                    </ice:form>

                                </td>
                                <td valign="top" width="auto"><!-- Aqui deveria aparecer a notícia clicada -->
                                    <ice:outputText value="#{Noticia.data}"/>
                                    <ice:outputText value="#{Noticia.noticia}"/>
                                </td>
                            </tr>
                        </table>
Ygor

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

Criado 9 de setembro de 2010
Ultima resposta 9 de set. de 2010
Respostas 5
Participantes 3