Formulario com cache na hora de alterar jsf 2.0[RESOLVIDO]

6 respostas
fernandogodoy18

Estou com um problema na hora de alterar o dados de um formulario.

insiro um dado,
dai mando alterar,
Quando altero mais de 3 vezes o formulario volta a apresentar os dados de quanto eu alterei a primeira vez

6 Respostas

dev.rafael

Posta o código ai.

fernandogodoy18
Eu tenho meu Listar
<?xml version="1.0" encoding="windows-1252"?>
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.prime.com.tr/ui">
    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <meta http-equiv="Cache-Control" content="no-store,No-cache,must-revalidate,post-check=0,pre-check=0,max-age=0"/>
        <meta http-equiv="Pragma" content="No-cache"/>
         <meta Http-Equiv="Cache-Control" Content="no-cache"/>
         <meta HTTP-EQUIV="Refresh" />
         <meta http-equiv="Expires" content="-1"/>

        <title>Listar</title>
    </h:head>
    <h:body>
        <p>
            <h:form>
                <p:dataTable var="a" value="#{dadosMB.listar}" >
                <p:column>
                    <f:facet name="header">
                        <h:outputText value="ID"/>
                    </f:facet>
                    <h:outputText value="#{a.idDados}"/>
                </p:column>
                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Nome"/>
                    </f:facet>
                    <h:outputText value="#{a.nome}"/>
                </p:column>
                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Sobrenome"/>
                    </f:facet>
                    <h:outputText value="#{a.sobrenome}"/>
                </p:column>
                <p:column>
                    <f:facet name="header">
                       <h:outputText value="AÇÃO"/>
                    </f:facet>
                    <p:commandLink value="EDITAR    / " action="#{dadosMB.editar}" ajax="false">
                        <f:setPropertyActionListener target="#{dadosMB.dados}" value="#{a}"/>
                        
                    </p:commandLink>          
                    <p:commandLink value="   EXCLUIR    /  " action="#{dadosMB.excluir}" ajax="false">
                    <f:setPropertyActionListener target="#{dadosMB.dados}" value="#{a}"/>
                    </p:commandLink>
                    <p:commandLink value="   NOVO" action="#{dadosMB.novo}" ajax="false">
                    </p:commandLink>
                    
                </p:column>
                    
            </p:dataTable>
                </h:form>
        </p>
    </h:body>
</html>

Dai tem a pagina de Novo

<?xml version="1.0" encoding="windows-1252"?>
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"

      xmlns:p="http://primefaces.prime.com.tr/ui">


    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <meta http-equiv="Cache-Control" content="no-store,No-cache,must-revalidate,post-check=0,pre-check=0,max-age=0"/>
        <meta http-equiv="Pragma" content="No-cache"/>
         <meta Http-Equiv="Cache-Control" Content="no-cache"/>  
        <meta http-equiv="Expires" content="-1"/>
        <meta content=""  HTTP-EQUIV="Refresh"/>
        
        

        <title>TODO supply a title</title>
    </h:head>
    <h:body>
            
        <p>
            <h:form>
                <h:inputHidden value="#{dadosMB.dados.idDados}" id="id"/>
                Nome:
                <h:inputText value="#{dadosMB.dados.nome}" id="nome"/>
                Sobrenome:
                <h:inputText value="#{dadosMB.dados.sobrenome}" id="sobrenome"/>

                <p:commandButton value="Salvar" action="#{dadosMB.salvar}" ajax="false"/>


            </h:form>
        </p>
    </h:body>
</html>

E o ManagedBean

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controle;

import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import modelo.Dados;

/**
 *
 * @author Fernado
 */
@ManagedBean
@RequestScoped
public class DadosMB {

    private Dados dados = new Dados();
    private DadosDao dao = new DadosDao();
    /** Creates a new instance of DadosMB */

    public DadosMB() {
  
    }
    public String novo(){
             return "Novo.xhtml";
    }
    
    public List<Dados> getListar(){
          List<Dados> lista = dao.list();
          return lista;
    }

    public String listar(){
        return "Listar.xhtml";
    }

    public String salvar(){
        dao.save(dados);
        return "Listar.xhtml";
    }

    public String editar(){
       return "Novo.xhtml";
    }

    public String excluir(){
       dao.delete(dados);
        return "Listar.xhtml";
    }

    public Dados getDados() {
        return dados;
    }


    public void setDados(Dados dados) {
        this.dados = dados;
    }

}

ta tudo funcionando blz
Problema ta só no alterar.

dev.rafael

Kra, o seu código me parece corréto. É dessa maneira q eu implemento esse tipo de funcionalidade (± :slight_smile: ). Verifique se o problema ñ está no seu DAO ou especifique melhor o q vc quis dizer com
"Quando altero mais de 3 vezes o formulario volta a apresentar os dados de quanto eu alterei a primeira vez ", vai ver fui eu q ñ te entendi.

fernandogodoy18

Já tentei mudar o DAO também e mesmo assim não funcionou…

O erro eh assim…

eu listo os dados…

clico em alterar… ele joga os dados certos no formulario, faço a alteração e salvo…

entao ele atualiza a lista de dados…

mais quando eu clico nessa lista para alterar o mesmo registro…

ele seta no formulario dados antigos… e nao os que tem na lista…

R

Estou com este problema tambem, você poderia colocar a solução? (já que o tópico está marcado como resolvido…)

fernandogodoy18

Cara eu não me recordo bem o que era…

Mais verifique seu scopo e o equals e hashcode…

qualquer coisa se não for me avisa…

Criado 24 de novembro de 2010
Ultima resposta 1 de ago. de 2011
Respostas 6
Participantes 3