3
respostas

Erro ao criar o botao alterar

Não é bem um erro que está acontecendo, mais na hora de alterar meu produto, ele altera e grava também. Oque sera que está acontecendo? Meus código.

No meu Controller

public void salvar() {
         if(produto.getId() == null) {
            new DAO<Produto>(Produto.class).adiciona(this.produto);
        } else {
            new DAO<Produto>(Produto.class).alterar(this.produto);
        }
        this.produto = new Produto();
    }

public void carregar(Produto produto) {
        this.produto = produto;
    }

Meu DAO.

public void alterar(T t) {
        EntityManager manager = new JPAUtil().geEntityManager();
        manager.getTransaction().begin();
        manager.merge(t);
        manager.getTransaction().commit();
        manager.close();
    }

Meu html

<h:form>
            <h:dataTable id="tabelaProduto" var="produto" value="#{produtoController.produtos}">
                <h:column>
                    <f:facet name="header">Nome</f:facet>
                    <h:outputText value="#{produto.nome}"/>
                </h:column>
                    <h:column>
                    <f:facet name="header">Descricao</f:facet>
                    <h:outputText value="#{produto.descricao}"/>
                </h:column>
                    <h:column>
                    <f:facet name="header">Preço</f:facet>
                    <h:outputText value="#{produto.preco}"/>
                </h:column>
                <h:column>
                    <f:facet name="header">Data</f:facet>
                    <h:outputText value="#{produto.data.time}">
                        <f:convertDateTime pattern="dd/MM/yyyy" timeZone="America/Sao_Paulo"/>
                    </h:outputText>
                </h:column>
                <h:column>
                    <f:facet name="header">Excluir</f:facet>
                    <h:commandLink value="Excluir" action="#{produtoController.remover(produto)}"/>
                </h:column>
                <h:column>
                    <f:facet name="header">Alterar</f:facet>
                    <h:commandLink value="Alterar" action="#{produtoController.carregar(produto)}"/>
                </h:column>
            </h:dataTable>
</h:form>

Como eu disse bem na hora de clicar no botao alterar ele altera pois grava o devido no banco de dados e não apenas a alteração

3 respostas

Você está usando herança?

Carlos não estou usando herança nenhuma. A não ser no meu html tipo "produtoController.produto.nome".

Alguem me ajudaaa kkk

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software