Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Guilherme do Vale

CellEdit do datatable perde a edição

Recommended Posts

ola pessoal,
Estou com um problema chato que não consigo resolver. Criei um datatable com cellEditor dentro de uma tab e, dentro dessa tab, eu coloquei um ajax que muda a lista do datatable toda vez que muda para outra tab. O problema é que, quando eu clico em outra tab e carrega o outro datatable eu perco a edição das células e só aparece o output da célula. Gostaria de uma ajuda pra saber o que está acontecendo e como resolver:
xhtml
   <p:tabView value="#{cadastroContasBean.listaTabela}" dynamic="true"
     closeable="true" activeIndex="#{cadastroContasBean.idTabela}"
     var="tabela" style="heigth:100%;width:100%" id="tabView">
     <p:tab title="tab" closable="true" id="tab">
     <div>
     <p:dataTable binding="#{cadastroContasBean.dataTable}" var="gasto"
     value="#{cadastroContasBean.listaGasto}" scrollable="true"
     scrollHeight="150" editable="true" editMode="cell" id="Tabela"
     widgetVar="wTabela">
     <p:column headerText="Nome">
     <p:cellEditor>
     <f:facet name="output">
     <p:outputLabel value="#{gasto.nome}" />
     </f:facet>
     <f:facet name="input">
     <p:inputText id="inputTextNome" required="true"
     value="#{cadastroContasBean.nome}" style="width:96%"
     binding="#{cadastroContasBean.inputTextNome}">
     <p:ajax event="change" update="Tabela"
     listener="#{cadastroContasBean.atualizaVT('inputTextNome')}"
     execute="inputTextNome" process="@this">
     </p:ajax>
     </p:inputText>
     </f:facet>
     </p:cellEditor>
     </p:column>
     <p:column headerText="Quantidade">
     <p:cellEditor>
     <f:facet name="output">
     <p:outputLabel value="#{gasto.quantidade}" />
     </f:facet>
     <f:facet name="input">
     <p:inputText id="inputQtd" required="true"
     value="#{cadastroContasBean.qtd}" style="width:96%"
     onkeydown="MascaraNumero()" onkeyup="MascaraNumero()"
     binding="#{cadastroContasBean.inputTextQtd}">
     <p:ajax event="change" update="Tabela"
     listener="#{cadastroContasBean.atualizaVT('inputTextQtd')}"
     execute="inputQtd" process="@this" />
     </p:inputText>
     </f:facet>
     </p:cellEditor>
     </p:column>
     <p:column headerText="Valor">
     <p:cellEditor>
     <f:facet name="output">
     <p:outputLabel value="#{gasto.valor}">
     <f:convertNumber currencySymbol="R$" type="currency" />
     </p:outputLabel>
     </f:facet>
     <f:facet name="input">
     <p:inputText id="inputValor" required="true"
     value="#{cadastroContasBean.valor}" style="width:96%"
     binding="#{cadastroContasBean.inputTextValor}">
     <f:convertNumber pattern="#,##0.00"></f:convertNumber>
     <f:validator validatorId="MoedaValidator" />
     <p:ajax event="change" update="Tabela"
     listener="#{cadastroContasBean.atualizaVT('inputTextValor')}"
     execute="inputValor" process="@this">
     </p:ajax>
     </p:inputText>
     </f:facet>
     </p:cellEditor>
     </p:column>
     <p:column headerText="Valor Total" id="vt">
     <p:outputLabel id="outputVT" value="#{gasto.valorTotal}">
     <f:convertNumber currencySymbol="R$" type="currency" />
     </p:outputLabel>
     </p:column>
     </p:dataTable>
     <div id="addGasto">
     <p:commandButton value="Add gasto" style="width:100%"
     actionListener="#{cadastroContasBean.addGasto}" update="Tabela"></p:commandButton>
     </div>
     </div>
     <div>
     <p:outputLabel value="Comentários: " for="comentario"></p:outputLabel>
     <p:inputTextarea value="#{tabela.comentarios}" id="comentario"
     autoResize="true" style="width: 100%; height: 50%"></p:inputTextarea>
     </div>
     </p:tab>
     <p:ajax event="tabChange" execute="tab"
     listener="#{cadastroContasBean.mudaTab}" process="@this" />
    </p:tabView>
MB
public void mudaTab(TabChangeEvent event) {
     tabelaAtual = (Tabela)event.getData();
     idTabela =(tabelaAtual).getId();
     listarGastos();
    }
    public void listarGastos(){
     listaGasto = tabelaAtual.getListaGastos();
    }
Tabela
 public class Tabela {


     @Id @GeneratedValue(strategy=GenerationType.IDENTITY) 
     private Integer id;
     private String comentarios;


     @OneToMany (mappedBy="tabela")
     private List<Gastos> listaGastos = new ArrayList<Gastos>();


     @ManyToOne
     private MesAno mesano;


     public List<Gastos> getListaGastos() {
     return listaGastos;
     }
     public void setListaGastos(List<Gastos> listaGastos) {
     this.listaGastos = listaGastos;
     }
     public MesAno getMesano() {
     return mesano;
     }
     public void setMesano(MesAno mesano) {
     this.mesano = mesano;
     }
     public String getComentarios() {
     return comentarios;
     }
     public void setComentarios(String comentarios) {
     this.comentarios = comentarios;
     }
     public Integer getId() {
     return id;
     }
     public void setId(Integer id) {
     this.id = id;
     } 
    }

Obs: não consigo identar o xhtml ¬¬

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Alessandro Bodão
      Salve galerinha, passando pra mostrar pra vocês o novo projeto de marca que a Jatobá Estúdio desenvolveu, espero que gostem.   https://www.behance.net/gallery/166555627/Fernanda-Pinheiro-Nutricionista-Esportiva
    • Por Alessandro Bodão
      Boa noite irmandade!
       
      Ando reparando de alguns anos pra cá, uma forte tendência em que sites bem dinâmicos e interativos transitam de uma página pra outra sem que a outra página se quer passe por um processo de carregamento, você clica, simplesmente acontece algumas transições nos elementos da página, e de repente, você está em outra página, outro url. De forma suave, nada é carregado, apenas algo acontece e você já está em outra página.
       
      Gostaria de saber como isso é feito pra aplicar em um site que estou desenvolvendo, se é algum framework, alguma ferramenta além do JavaScript...
       
      Trouxe um belo exemplo: https://www.traffic.productions/
       
      Se você chegou até aqui, agradeço desde já!
    • Por Adriano Costa
      Fala galera!!!
      Eu sou novo na programação e estou precisando de uma ajuda, estou tentando fazer um for dentro dos scriplets mas esta dando erro. É a parte do read do meu crud. Quando eu aço o for através da camada controller ele funciona, mas na pagina jsp ele da um erro.
       
      <%@ page language="java" contentType="text/html; charset=utf-8"
          pageEncoding="utf-8"%>
      <%@page import="model.JavaBeans"%>
      <%@page import="java.util.ArrayList"%>  
      <%
          ArrayList<JavaBeans> lista = (ArrayList<JavaBeans>)request.getAttribute("contatos");
          for (int i = 0; i < lista.size(); i++){
              out.print(lista.get(i).getIdlista());
          }
      %>
       
      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="utf-8">
      <title>Lista de Tarefas</title>
      <link rel="stylesheet" href="css/styles.css">
      </head>
      <body>
          <div id= "login-container">
              <h1>Lista de Tarefas</h1>
              <table>
                  <thead>
                      <tr>
                          <th>Código</th>
                          <th>Titulo</th>
                          <th>Descrição</th>
                          <th>Data</th>
                          <th>Status</th>
                          <th>Prioridade</th>
                      </tr>
                  </thead>
                  <tbody>
                      
                  </tbody>
              </table>
              <form name="frmContato" action="listarTarefa">
                  
                  <input type="submit" value="Cadastrar" onclick="validar()">
              </form>
              
          </div>
          <script src="scripts/validador.js"></script>    
      </body>
      </html>
       
      E esse é o erro
       
      HTTP Status 500 – Internal Server Error
      Type Exception Report
      Message An exception occurred processing [/listaTarefas.jsp] at line [8]
      Description The server encountered an unexpected condition that prevented it from fulfilling the request.
      Exception
      org.apache.jasper.JasperException: An exception occurred processing [/listaTarefas.jsp] at line [8] 5: 6: <% 7: ArrayList<JavaBeans> lista = (ArrayList<JavaBeans>)request.getAttribute("contatos"); 8: for (int i = 0; i < lista.size(); i++){ 9: out.print(lista.get(i).getIdlista()); 10: } 11: %> Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:611) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:500) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:378) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:326) javax.servlet.http.HttpServlet.service(HttpServlet.java:733) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) Root Cause
      java.lang.NullPointerException org.apache.jsp.listaTarefas_jsp._jspService(listaTarefas_jsp.java:126) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71) javax.servlet.http.HttpServlet.service(HttpServlet.java:733) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:467) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:378) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:326) javax.servlet.http.HttpServlet.service(HttpServlet.java:733) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) Note A pilha de erros completa da causa principal está disponível nos logs do servidor.
       
       
      esse é o Medoto
       
      // Listar tarefa
              protected void tarefas(HttpServletRequest request, HttpServletResponse response)
                      throws ServletException, IOException {
                  //Criando um objeto que irá receber os dados do JavaBeans
                  ArrayList<JavaBeans> lista = dao.listarTarefa();
                  
                  request.setAttribute("tarefas", lista);
                  RequestDispatcher rd = request.getRequestDispatcher("listaTarefas.jsp");
                  rd.forward(request, response);
                  
                  //Teste de recebimento da lista
                  for(int i = 0; i<lista.size(); i++) {
                      System.out.println(lista.get(i).getIdcon());
                      System.out.println(lista.get(i).getTitulo());
                      System.out.println(lista.get(i).getDescricao());
                      System.out.println(lista.get(i).getData());
                      System.out.println(lista.get(i).getStatus());
                      System.out.println(lista.get(i).getPrioridade());
                  }
              }
          
    • Por Thiago Ladislau
      Bom dia gostaria de compartilhar um erro que vem ocorrendo há muito tempo na empresa em que trabalho. Porem nunca foi identificada a causa origem do mesmo, Isso ocorre de forma aleatória não tem data nem hora, acontece de repente. Sendo obrigado ao 'fechamento forçado' do sistema que pode gerar problemas na base. Em anexo imagem do Erro.   Grato
    • Por lucasbr2312
      Eu tenho um carousel do bootstrap e me foi proposto que quando trocasse o slide, fizesse uma pequena animação nos elementos dentro dele
      Algo assim:
      if($('#item-2').hasClass('active')){ $('.imagem-carousel').fadeIn(2000) }   Mas eu queria saber como eu faço pra que essa condição seja verificada sempre que o slide for trocado, seja por click, arrastando ou quando o slide passa automaticamente. 
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.