1

ユーザーがDataListの Paginator を使用してページをクリックすると、 Page イベントをキャプチャしようとしています。ユーザー ガイドには、このコンポーネントの Ajax の動作については言及されていませんが、<p:ajax event="page">とにかく試してみたところ、イベント「ページ」がサポートされていないことがわかりました。

DataListで使用できるイベントはありますか? そうでない場合、各ページをユーザーページとして保存する方法を知っている人はいますか?

ありがとう:)ニール

4

2 に答える 2

1

preRenderComponentデータリストの汎用イベントを使用して、コンポーネントのレンダリングライフサイクル(コンポーネントは各ページネーション操作で再レンダリングされます)にフックできます。データリストに以下を追加するだけです。

   <p:dataList>
      <f:event type="preRenderComponent" listener="#{yourBean.operation}"/>
   </p:dataList>
于 2013-02-02T14:20:27.733 に答える
0

ページリンクをクリックすると呼び出される標準の PrimeFaces JavaScript 関数をオーバーライドすることができます。そこから、remoteCommand または必要なものを呼び出すことができます...

私はそれがベストプラクティスではないことを知っていますが、可能性があります;)

PrimeFaces.widget.Paginator.prototype.bindPageLinkEvents = function(){

  var $this = this;

  this.pagesContainer.children('.ui-paginator-page').on('click.paginator', function(e) {
    var link = $(this);

    if(!link.hasClass('ui-state-disabled')&&!link.hasClass('ui-state-active')) {
      $this.setPage(parseInt(link.text()) - 1);
    }

    // your code goes here

  })
  .on('mouseover.paginator', function() {
    var item = $(this);
    if(!item.hasClass('ui-state-disabled')&&!item.hasClass('ui-state-active')) {
      item.addClass('ui-state-hover');
    }
  })
  .on('mouseout.paginator', function() {
    $(this).removeClass('ui-state-hover');
  })
  .on('focus.paginator', function() {
    $(this).addClass('ui-state-focus');
  })
  .on('blur.paginator', function() {
    $(this).removeClass('ui-state-focus');
  })
  .on('keydown.paginator', function(e) {
    var key = e.which,
        keyCode = $.ui.keyCode;

    if((key === keyCode.ENTER||key === keyCode.NUMPAD_ENTER)) {
      $(this).trigger('click');
      e.preventDefault();
    }
  });
};

または、この回答を見てください。私はそれがとても好き! https://stackoverflow.com/a/25930991/2265727

于 2015-01-13T17:21:39.103 に答える