简体   繁体   English

在Primefaces数据表上分页不起作用

[英]Pagination on Primefaces datatable doesn't work

I am currently developing an application with JPA2, Spring 3, MyFaces 2.1 and Primefaces 4.0 RC1. 我目前正在使用JPA2,Spring 3,MyFaces 2.1和Primefaces 4.0 RC1开发应用程序。

I developed a simple page with one datatable using pagination feature of primefaces, but when I click on page number (bottom or header), it simply doesn't work. 我使用素数的分页功能开发了一个带有一个数据表的简单页面,但是当我单击页码(底部或标题)时,它根本不起作用。 No exception or javascript error is shown. 没有显示异常或javascript错误。

I've tested both in Chrome and Firefox. 我已经在Chrome和Firefox中进行了测试。 Same problem. 同样的问题。

Here my code: 这是我的代码:

@ManagedBean
@ViewScoped
public class MeusCelularesTitularMB extends AbstractMB implements Serializable {

    private static final long serialVersionUID = 5446365969371398743L;
    private static final Logger logger = LogManager.getLogger(MeusCelularesTitularMB.class);

    private CadastroGeral loggedUser;
    private List<LinhaCelularTitular> listaCelularesTitular;

    @PostConstruct
    public void init() {
    try {
        this.loggedUser = getCadastroGeralService().loadUser(getAuthenticatedUser());
        this.listarMeusCelularesTitular();
    } catch (ServiceException e) {
        logger.error("Erro ao consultar banco de dados", e);
        throw new RuntimeException(e);
    }
    }

    private void listarMeusCelularesTitular() {
    try {
        this.listaCelularesTitular = getLinhaCelularTitularSevice().getLinhasCelularesPorReponsavel(this.loggedUser.getMatricula());
    } catch (ServiceException e) {
        logger.error("Erro ao consultar banco de dados", e);
        throw new RuntimeException(e);
    }
    }

    private static CadastroGeralService getCadastroGeralService() {
    return Faces.evaluateExpressionGet("#{cadastroGeralService}");
    }

    private static LinhaCelularTitularService getLinhaCelularTitularSevice() {
    return Faces.evaluateExpressionGet("#{linhaCelularTitularService}");
    }

    public List<LinhaCelularTitular> getListaCelularesTitular() {
    return listaCelularesTitular;
    }

    public void setListaCelularesTitular(List<LinhaCelularTitular> listaCelularesTitular) {
    this.listaCelularesTitular = listaCelularesTitular;
    }
}

And the XHTML: 和XHTML:

<?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:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui">

    <ui:composition template="../../templates/template.xhtml">
        <ui:define name="content">
            <h:outputStylesheet library="css"  name="meusCelulares.css" />

            <h:form id="meusCelularesTitulares">
                <p:ajaxStatus onstart="statusDialog.show();" onsuccess="statusDialog.hide();"/>

                <h2>Celulares - Titular</h2>
                <p:dataTable id="tblLinhaCelularesTitulares"
                             var="celTitular"
                             widgetVar="wdgLinhaCelularesTitulares"
                             value="#{meusCelularesTitularMB.listaCelularesTitular}"
                             rowKey="#{celTitular.id}"
                             paginator="true"
                             rows="10"
                             rowsPerPageTemplate="5,10,15"
                             emptyMessage="Nenhum celular encontrado na Base de Dados">

                    <p:column>
                        <f:facet name="header">  
                            <h:outputText value="Ações" />  
                        </f:facet>

                        <h:outputText value="A B C" />
                    </p:column>

                    <p:column styleClass="colunaCentralizada">
                        <f:facet name="header">  
                            <h:outputText value="Código DDD" />  
                        </f:facet>

                        <h:outputText value="#{celTitular.codigoDDD}" />
                    </p:column>

                    <p:column styleClass="colunaCentralizada">
                        <f:facet name="header">  
                            <h:outputText value="Número" />
                        </f:facet>

                        <h:outputText value="#{celTitular.numeroLinha}" />
                    </p:column>

                    <p:column>
                        <f:facet name="header">  
                            <h:outputText value="Nome" />  
                        </f:facet>

                        <h:outputText value="#{celTitular.responsavel.nome}" />
                    </p:column>
                </p:dataTable>
            </h:form>
        </ui:define>
    </ui:composition>
</html>

If you need some more information, please let me know. 如果您需要更多信息,请告诉我。

Found the solution! 找到了解决方案! Thanks to @XtremeBiker for the hints. 感谢@XtremeBiker的提示。

The <p:ajaxStatus onstart="statusDialog.show();" onsuccess="statusDialog.hide();"/> <p:ajaxStatus onstart="statusDialog.show();" onsuccess="statusDialog.hide();"/> <p:ajaxStatus onstart="statusDialog.show();" onsuccess="statusDialog.hide();"/> is referencing a dialog box that I forgot to add in the XHTML. <p:ajaxStatus onstart="statusDialog.show();" onsuccess="statusDialog.hide();"/>引用了一个我忘记添加到XHTML中的对话框。 So I added the code below and it worked. 所以我在下面添加了代码,它可以正常工作。

<p:dialog modal="true" 
          widgetVar="statusDialog"
          header="Aguarde..."
          draggable="false"
          closable="false"
          resizable="false"
          width="245"
          height="25" >
    <div align="center">
        <p:graphicImage value="/resources/images/ajax-loader.gif" />
    </div>
</p:dialog>

I use this code to block screen when a ajax request is processing. 当ajax请求正在处理时,我使用此代码来阻止屏幕。

Thanks again. 再次感谢。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM