1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Exibindo DataTable com filtro (JSF + Primefaces + EJB + JPA)

Como estou sem pontos não consigo responder a minha propria pergunta, é isso mesmo?

O problema é que eu preciso fazer um bloco para ser inserido a data, assim somente após a inserção dessa data é que a dataTable deve ser exibida. Já tentei de diversas formas e não consegui.

Recebi como resposta do usuario utluiz o seguinte:

Tente essa idéia:

<h:form id="tabela">
            <p:selectOneMenu value="#{qtdeNfeController.dataSelecionada}">  
            <f:selectItem itemLabel="Select One" itemValue="" />  
            <f:selectItem itemLabel="Option 1" itemValue="data1" />  
            <f:selectItem itemLabel="Option 2" itemValue="data1" />  
            <f:selectItem itemLabel="Option 3" itemValue="data1" />  
            <p:ajax update="nfe"/>
            </p:selectOneMenu>  

                <p:dataTable id="nfe" rendered="qtdeNfeController.showDataTable" value="#{qtdeNfeController.notas}" var="nota" emptyMessage="Não há notas"   >

                <p:column headerText="Código do cliente">
                    <h:outputText value="#{nota.cdCliente}"/>
                </p:column>
                <p:column headerText="DS Razão Social">
                    <h:outputText value="#{nota.dsRazaoSocial}"/>
                </p:column>
                <p:column headerText="Ano/Mês de inclusão" >  
                    <h:outputText value="#{nota.anoMesInclusao}"/>
                </p:column>
                <p:column headerText="Somatória NFE">
                    <h:outputText value="#{nota.sumNfe}"/>
                </p:column>
            </p:dataTable>
            </h:form>

Managed Bean

@Named
@ViewScoped
public class QtdeNfeController implements Serializable {

    @Inject
    private QtdeNfeDao qtdeNfeDao;
    @Inject
    @QtdeNfeQualificador
    private List<VwRelQtdeNfe> notas;

    private String dataSelecionada;
    private boolean showDataTable;



    public QtdeNfeController() {        
    }    


     public boolean isShowDataTable()
     {
       if(dataSelecionada != null && !dataSelecionada.isEmpty())
          {
            showDataTable = true;
           }

         return showDataTable;
     }

 public void setShowDataTable(boolean showDataTable)
  {
   showDataTable = showDataTable;
  }

Das respostas que eu recebi essa é a que mais aproxima ao que eu pretendo fazer mais para frente. Porém ainda não consigo exibir o formulário.

Segue o erro que eu recebo no servidor:

[#|2013-10-15T12:04:21.272-0300|WARNING|glassfish3.1.2|org.apache.catalina.connector.Request|_ThreadID=1087;_ThreadName=Thread-2;|PWC4011: Unable to set request character encoding to UTF-8 from context , because request parameters have already been read, or ServletRequest.getReader() has already been called|#]

[#|2013-10-15T12:04:25.377-0300|WARNING|glassfish3.1.2|org.apache.catalina.connector.Request|_ThreadID=1097;_ThreadName=Thread-2;|PWC4011: Unable to set request character encoding to UTF-8 from context , because request parameters have already been read, or ServletRequest.getReader() has already been called|#]

[#|2013-10-15T12:04:37.990-0300|WARNING|glassfish3.1.2|org.apache.catalina.connector.Request|_ThreadID=104;_ThreadName=Thread-2;|PWC4011: Unable to set request character encoding to UTF-8 from context /app, because request parameters have already been read, or ServletRequest.getReader() has already been called|#]

[#|2013-10-15T12:04:38.119-0300|WARNING|glassfish3.1.2|org.jboss.weld.Bean|_ThreadID=104;_ThreadName=Thread-2;|WELD-000018 Executing producer field or method [method] @Produces @QtdeNfeQualificador public br.com.app.relatorio.controller.QtdeNfeController.gerarListaNotas() on incomplete declaring bean Managed Bean [class br.com.app.relatorio.controller.QtdeNfeController] with qualifiers [@Any @Default @Named] due to circular injection|#]

[#|2013-10-15T12:04:43.171-0300|WARNING|glassfish3.1.2|org.jboss.weld.Bean|_ThreadID=106;_ThreadName=Thread-2;|WELD-000018 Executing producer field or method [method] @Produces @QtdeNfeQualificador public br.com.app.relatorio.controller.QtdeNfeController.gerarListaNotas() on incomplete declaring bean Managed Bean [class br.com.app.controller.QtdeNfeController] with qualifiers [@Any @Default @Named] due to circular injection|#]

[root@interfaceh ~]# [#|2013-10-15T12:04:21.272-0300|WARNING|glassfish3.1.2|org.apache.catalina.connector.Request|_ThreadID=1087;_ThreadName=Thread-2;|PWC4011: Unable to set request character encoding to UTF-8 from context , because request parameters have already been read, or ServletRequest.getReader() has already been called|#] -bash: syntax error near unexpected token `|'

Creio que seja a anotação @Produces, não tenho certeza. Segue o meu bean:

@Named
@RequestScoped
public class QtdeNfeController implements Serializable {

    @Inject
    private QtdeNfeDao qtdeNfeDao;
    @Inject
    @QtdeNfeQualificador
    private List<VwRelQtdeNfe> notas;


    private String dataSelecionada;
    private boolean showDataTable;    


    public QtdeNfeController() {        
    }    


    @Produces
    @QtdeNfeQualificador
    public List<VwRelQtdeNfe> gerarListaNotas() {
        try {
            return qtdeNfeDao.buscaPorData(dataSelecionada);           
        } catch (SQLException ex) {
            FacesUtil.mensagemErro("Erro ao buscar notas.", "");
        }
        return null;
    }

    public List<VwRelQtdeNfe> getNotas() {
        return notas;
    }

    public void setNotas(List<VwRelQtdeNfe> notas) {
        this.notas = notas;
    }

    public String getDataSelecionada() {
        return dataSelecionada;
    }

    public void setDataSelecionada(String dataSelecionada) {
        this.dataSelecionada = dataSelecionada;
    }

    public void geraLista(){
        this.notas = gerarListaNotas();
    }

    public boolean isShowDataTable()
     {
       if(dataSelecionada != null && !dataSelecionada.isEmpty())
          {
            showDataTable = true;
           }

         return showDataTable;
     }

 public void setShowDataTable(boolean showDataTable)
  {
   this.showDataTable = showDataTable;
  }

Alguma sugestão? Muito Obrigado!

  • Você não precisa responder sua pergunta, adicione comentários ou edite a pergunta original acrescentando detalhes ao final dela.

    utluiz   15 de out de 2013
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags primefaces jsf ou faça a sua própria pergunta.