Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao atualizar a pagina

Boa noite, estou fazendo um sistema de farmacia para me adptar com CDI, porem estou com um probleminha que não sei oque está acontecendo! Tenho a minha Classe fornecedor e lá ta tudo correto sem nenhum problema, agora tenho a minha pagina de produto e nesse produto há uma associação com fornecedor!


@SuppressWarnings("serial")
@Entity
@NamedQueries({
    @NamedQuery(name = "Fornecedor.lista", query = "Select f from Fornecedor f")
})
public class Fornecedor implements Serializable{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long codigo;
    private String descricao;
    @OneToMany(mappedBy = "fornecedor")
    private List<Produto> produtos = new ArrayList<Produto>();
@SuppressWarnings("serial")
@Entity
@NamedQueries({
    @NamedQuery(name = "Produto.lista", query = "Select p from Produto p join fetch p.fornecedor"),
    @NamedQuery(name = "Produto.fornecedores", query = "Select f from Fornecedor f")
})
public class Produto implements Serializable{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long codigo;
    private String descricao;
    private Integer quantidade;
    private Double preco;
    @ManyToOne
    @JoinColumn(name = "fornecedor_codigo")
    private Fornecedor fornecedor = new Fornecedor();

Porém quando adiciono um produto e quando escolho o meu fornecedor no selectOneMenu ele grava tudo certo, mas quando entro na minha view de tabela de produtos com o fornecedor, só acaba atualizando os campos do meu produto, mais quando adiciono outro produto com fornecedor a antiga que não tava aparecendo o fornecedor aparece e o novo produto que acabei de adicionar vem sem o fornecedor. E já coloquei para atualizar a minha lista. Segue o meu código.

@SuppressWarnings("serial")
@Named
@SessionScoped
public class ProdutoBean implements Serializable {

    @Inject
    private Produto produto;
    @Inject
    Mensagem mensagem;
    @Inject
    ProdutoDao produtoDao;
    @Inject
    RedirecionadorDePaginas direcao;

    private List<Produto> produtos;

    @Transacional
    public void salvar() {
        if (produto.getCodigo() == null) {
            produtoDao.salvar(produto);
            produtos = produtoDao.listaProdutos();
            mensagem.mensagem("Produto adicionado com sucesso");
        } else {
            produtos = produtoDao.listaProdutos();
            produtoDao.alterar(produto);
            mensagem.mensagem("Produto alterado com sucesso");
        }
        this.produto = new Produto();
    }

    @Transacional
    public void excluir(Produto produto) {
        produtoDao.excluir(produto);
        mensagem.mensagem("Produto excluido com sucesso");
        this.produtos = produtoDao.listaProdutos();
    }

    public String carregar(Produto produto) {
        this.produto = produto;
        return direcao.redirecionador("produto.xhtml");
    }

    public String novo() {
        return direcao.redirecionador("produto.xhtml");
    }

    public String formularioTabela() {
        return direcao.redirecionador("produtoPesquisa.xhtml");
    }

    public List<Fornecedor> getFornecedores() {
        return produtoDao.listaFornecedor();
    }

    public List<Produto> getProdutos() {
        if (produtos == null) {
            produtos = produtoDao.listaProdutos();
        }
        return produtos;
    }

    public Produto getProduto() {
        return produto;
    }

    public void setProduto(Produto produto) {
        this.produto = produto;
    }
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:p="http://primefaces.org/ui"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">

<ui:composition template="/template/template.xhtml">
    <ui:define name="conteudo">
        <div class="ui-fluid">
            <h:form id="formularioTabela">
                <p:growl id="mensagem" showDetail="true" sticky="true" />
                <p:dataTable id="tabelaProduto" paginator="true" rows="8"
                    value="#{produtoBean.produtos}" var="produto"
                    emptyMessage="Nenhum produto encontrado">
                    <f:facet name="header">Tabela Produto</f:facet>
                    <f:facet name="footer">
                        <p:commandButton value="Novo" action="#{produtoBean.novo}" />
                    </f:facet>

                    <p:column headerText="Codigo" filterBy="#{produto.codigo}"
                        filterMatchMode="contains" sortBy="#{produto.codigo}"
                        style="width: 10%">
                        <h:outputText value="#{produto.codigo}" />
                    </p:column>

                    <p:column headerText="Descrição" filterBy="#{produto.descricao}"
                        filterMatchMode="contains" sortBy="#{produto.descricao}">
                        <h:outputText value="#{produto.descricao}" />
                    </p:column>

                    <p:column headerText="Preço" filterBy="#{produto.preco}"
                        filterMatchMode="contains" sortBy="#{produto.preco}">
                        <h:outputText value="#{produto.preco}" />
                    </p:column>

                    <p:column headerText="Quantidade" filterBy="#{produto.quantidade}"
                        filterMatchMode="contains" sortBy="#{produto.quantidade}">
                        <h:outputText value="#{produto.quantidade}" />
                    </p:column>

                    <p:column headerText="Fornecedor"
                        filterBy="#{produto.fornecedor.descricao}"
                        filterMatchMode="contains"
                        sortBy="#{produto.fornecedor.descricao}">
                        <h:outputText value="#{produto.fornecedor.descricao}" />
                    </p:column>

                    <p:column headerText="opção" style="width:20%">
                        <h:panelGrid columns="2">
                            <p:commandButton icon="fa fa-fw fa-remove" title="Excluir"
                                update="formularioTabela"
                                actionListener="#{produtoBean.excluir(produto)}" />
                            <p:commandButton icon="fa fa-fw fa-edit" title="Editar"
                                action="#{produtoBean.carregar(produto)}" />
                        </h:panelGrid>

                    </p:column>
                </p:dataTable>
            </h:form>
        </div>
    </ui:define>
</ui:composition>
</html>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:p="http://primefaces.org/ui"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">

<ui:composition template="/template/template.xhtml">
    <ui:define name="conteudo">
        <div class="ui-fluid">
            <h:form id="formularioProduto">
                <p:growl id="mensagem" showDetail="true" sticky="true" />
                <p:fieldset legend="Cadastro de produto">

                    <h:panelGrid columns="2">
                        <p:outputLabel value="Descrição: " for="descricao" />
                        <p:inputText id="descricao"
                            value="#{produtoBean.produto.descricao}"
                            placeholder="Nome Produto" size="50" />
                    </h:panelGrid>

                    <h:panelGrid columns="2">
                        <p:outputLabel value="Preço: " for="preco" />
                        <p:inputText id="preco" value="#{produtoBean.produto.preco}" />

                        <p:outputLabel value="Quantidade: " for="quantidade" />
                        <p:inputText id="quantidade"
                            value="#{produtoBean.produto.quantidade}" />

                        <p:outputLabel value="Fornecedor: " for="fornecedor" />
                        <p:selectOneMenu id="fornecedor"
                            value="#{produtoBean.produto.fornecedor.codigo}">
                            <f:selectItem itemValue="" itemLabel="Selecione um fornecedor" />
                            <f:selectItems value="#{produtoBean.fornecedores}" var="forne"
                                itemLabel="#{forne.descricao}" itemValue="#{forne.codigo}" />
                        </p:selectOneMenu>
                    </h:panelGrid>
                </p:fieldset>

                <h:panelGrid columns="3">
                    <p:commandButton value="Limpar" type="reset" title="Limpar" />
                    <p:commandButton value="Salvar" action="#{produtoBean.salvar}"
                        update="formularioProduto" title="Salvar" />
                    <p:commandButton value="Buscar"
                        action="#{produtoBean.formularioTabela}" />
                </h:panelGrid>

            </h:form>
        </div>
    </ui:define>
</ui:composition>
</html>

Oque está ocorrendo?

1 resposta
solução!

Resolvido já