[RESOLVIDO] Aplicacao funcionando JSF/Primefaces para do nada

3 respostas
jsfprimefacesfront-endjava
T

Ola,

Eu fiz uma tela bem simples apenas para dar uma sugestao de compra e o cliente informar a quantidade que deseja e salvar para uma cotação.
Esse sistema funcionou ate ontem.

O que esta acontecendo é que quando eu mando salvar ele pegava os valores da tela atualizava normalmente a quantidade e salvava. No codigo nao mudou absolutamente nada. Simplemente deixou de funcionar isso. Pode ser alguam atualizacao recente do java que provocou isso? Alguma ideia?

<p:dataTable id="tabelaProdutos" value="#{leilaoController.itens}" var="item" 
                     scrollable="true" scrollHeight="300" style="width: 100%;margin: auto;">
            <p:column headerText="ID" width="5">
                <center>#{item.produto.id}</center>
            </p:column>
            <p:column headerText="EAN" width="10">
                <center>#{item.produto.ean}</center>
            </p:column>
            <p:column headerText="DESCRICAO" width="70">
                #{item.produto.descricao}
            </p:column>
            <p:column headerText="CONSUMO" width="5">
                <center>#{item.produto.produtosLoja[0].consumo}</center>
            </p:column>                
            <p:column headerText="MEDIA" width="10">
                <center>#{item.produto.produtosLoja[0].vendaMedia}</center>
            </p:column>
            <p:column headerText="ESTOQUE" width="5">
                <center>#{item.produto.produtosLoja[0].estoque}</center>
            </p:column>
            <p:column headerText="SUGESTÃO" width="10">
                <center>
                    <h:inputText value="#{item.quantidade}" size="10">
                        <f:convertNumber integerOnly="true" maxFractionDigits="0" minFractionDigits="0"/>
                    </h:inputText>
                </center>
            </p:column>
            <p:column headerText="AÇÕES" width="5">
                <center>
                    <p:commandButton title="Remover" icon="ui-icon-trash"
                                     action="#{leilaoController.removerItem(item)}"
                                     update=":formItensLeilao:tabelaProdutos">
                    </p:commandButton>
                </center>
            </p:column>
        </p:dataTable>

metodo salvar

public String salvar() {
    if (leilao.getId() == null) {
        dao.salvar(leilao, itens);
    } else {
        dao.atualizarItensLeilao(leilao, itens);
    }
    leilao = new Leilao();
    itens = new ArrayList<>();
    dias = 0;
    dataConsumoFinal = null;
    dataConsumoInicial = null;
    FacesUtil.adicionarMensagemInformacao("Leilão salvo com sucesso.");
    return null;
}

metodo dentro do dao

public void salvar(Leilao leilao, List<LeilaoItens> itens) {
    Connection conn = Database.getInstance().getConnection();
    try {
        conn.setAutoCommit(false);
        PreparedStatement psmt = conn.prepareStatement(SQL_INSERT, PreparedStatement.RETURN_GENERATED_KEYS);
        psmt.setInt(1, leilao.getLoja().getId());
        psmt.setDate(2, new Date(leilao.getDataInicial().getTime()));
        psmt.setDate(3, new Date(leilao.getDataFinal().getTime()));
        psmt.setString(4, leilao.getSituacao());
        psmt.setString(5, leilao.getDescricao());
        psmt.execute();
        ResultSet rs = psmt.getGeneratedKeys();
        while (rs.next()) {
            leilao.setId(rs.getInt(1));
        }
        salvarItensLeilao(leilao, itens, conn);
        conn.commit();
        rs.close();
        psmt.close();
        conn.close();
    } catch (SQLException ex) {
        ex.printStackTrace();
    }
}

private void salvarItensLeilao(Leilao leilao, List<LeilaoItens> itens, Connection conn) {
    try {
        PreparedStatement psmt = conn.prepareStatement(SQL_INSERT_ITENS);
        for (LeilaoItens item : itens) {
            if (item.getQuantidade().doubleValue() > 0) {
                psmt.setInt(1, leilao.getId());
                psmt.setInt(2, item.getProduto().getId());
                psmt.setBigDecimal(3, item.getQuantidade());
                psmt.setString(4, item.getProduto().getUnidade());
                psmt.setBigDecimal(5, BigDecimal.ONE);
                System.out.println("SALVANDO...\t" + leilao.getId() + "\t"
                        + "ITEM:\t" + item.getProduto().getDescricao()
                        + "QUANTIDADE:\t" + item.getQuantidade());
                psmt.addBatch();
            }
        }
        psmt.executeBatch();
    } catch (SQLException ex) {
        ex.printStackTrace();
        Logger.getLogger(LeilaoDao.class.getName()).log(Level.SEVERE, null, ex);
    }
}

3 Respostas

I

Tá rodando locamente ou no servidor? Verificou se não tem nenhum erro no log? Não está funcionando só essa parte ou o sistema todo? Não deu algum estouro de memória? Dá algum erro de Javascript (olhando pelo inspector do browser)

T

estava rodando no servidor. ai quando abri o projeto e executei local, passou a dar o mesmo erro na minha maquina tambem. Tambem nao da nenhum erro. Ele salva faz tudo. O problema eh que esse input da tela, nao esta sendo atualizado no controller.

T

a pagina possuia dois formularios. um de pesquisa com um modal e outro com os dados da pagina. removi os h:forms e deixei apenas um e voltou a funcionar.

Criado 17 de janeiro de 2017
Ultima resposta 17 de jan. de 2017
Respostas 3
Participantes 2