1

現在、JPA2、Spring 3、MyFaces 2.1、および Primefaces 4.0 RC1 を使用してアプリケーションを開発しています。

Primefaces のページネーション機能を使用して 1 つのデータテーブルを持つ単純なページを作成しましたが、ページ番号 (下部またはヘッダー) をクリックすると、単に機能しません。例外や JavaScript エラーは表示されません。

Chrome と Firefox の両方でテストしました。同じ問題。

ここに私のコード:

@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;
    }
}

そして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>

さらに情報が必要な場合は、お知らせください。

4

1 に答える 1

1

解決策を見つけました!ヒントをくれた @XtremeBiker に感謝します。

<p:ajaxStatus onstart="statusDialog.show();" onsuccess="statusDialog.hide();"/>、XHTML に追加するのを忘れたダイアログ ボックスを参照しています。そのため、以下のコードを追加するとうまくいきました。

<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>

このコードを使用して、ajax リクエストの処理中に画面をブロックします。

再度、感謝します。

于 2013-09-27T13:28:08.603 に答える