Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何在Primefaces数据表中跳转到bean的最后一页?_Jquery_Jsf_Jsf 2_Primefaces_Datatable - Fatal编程技术网

Jquery 如何在Primefaces数据表中跳转到bean的最后一页?

Jquery 如何在Primefaces数据表中跳转到bean的最后一页?,jquery,jsf,jsf-2,primefaces,datatable,Jquery,Jsf,Jsf 2,Primefaces,Datatable,我在.xhtml中有一个如下所示的数据表: <p:dataTable var="category" value="#{beanView.categories}" paginator="true" rows="5" paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}" rowsPerPag

我在.xhtml中有一个如下所示的数据表:

<p:dataTable var="category" value="#{beanView.categories}" paginator="true" rows="5" 
 paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
 rowsPerPageTemplate="5,10" id="categoryDT" styleClass="categoryClass"    
 editable="true" lazy="false" rowKey="#{category.id}">
 <!-- columns -->
<f:facet name="footer">
    <p:commandButton id="btnNewCat" 
      oncomplete="jQuery('.categoryClass').find('span.ui-icon-pencil').last().click();" 
    actionListener="#{beanView.onNewCategory}" 
    update="categoryDT" icon="ui-icon-plus" title="New Category" value="New Category" ></p:commandButton>
</f:facet></p:dataTable>
但这实际上不起作用!最后一页将不显示

可以从bean中单击我的datatable的最后一页按钮吗?还是有别的办法解决呢


感谢您的帮助

您可以通过命令按钮的
oncomplete
来实现这一点:

<p:commandButton oncomplete="PF('dataTableWV').paginator.setPage(PF('dataTableWV').paginator.cfg.pageCount - 1);"/>

注意:
dataTableWV
是dataTable的widgetVar。

我只是补充了Hatem的答案

如果在成功向datatable添加/创建行且未发生验证错误时仅需要进行检查,则可以使用:

action="#{myBean.createSelection}"
oncomplete="if ( !args.validationFailed &amp;&amp; args.created ) { PF('myDataTable').paginator.setPage(PF('myDataTable').paginator.cfg.pageCount - 1); }" />
oncomplete方法具有参数
xhr
status
args
,控制器可以使用这些参数返回实际发生的情况

在上面的例子中,我们正在向datatable添加一些实体,如果验证没有失败并且创建了一个新实体,那么我们只想分页到最后一个实体,而不是在更新或删除时

在控制器中,您可以/应该执行以下操作:

    public void createSelection()
    {
        T selectedEntity = getSelectedEntity();
        
        T persistedEntity = null;
        
        try
        {
            persistedEntity = getEntityService().create( selectedEntity );
        }
        catch ( CreateException e )
        {
            ...

            return;
        }
        
        ...            
        
        PrimeFaces.current().ajax().addCallbackParam( "created", Boolean.TRUE );            
    }

尝试将oncomplete替换为:
PF('dataTableWV').paginator.setPage(PF('dataTableWV').paginator.cfg.pageCount-1)哦!美好的这个有效!但是如何使用以下命令将:PF('widgetcategoryDT').paginator.setPage放入Bean:
RequestContext.getCurrentInstance().execute('PF('widgetcategoryDT').paginator.setPage…')哦,是的!!工作你能把它作为答案贴出来吗?所以我可以选择它!!?
action="#{myBean.createSelection}"
oncomplete="if ( !args.validationFailed &amp;&amp; args.created ) { PF('myDataTable').paginator.setPage(PF('myDataTable').paginator.cfg.pageCount - 1); }" />
    public void createSelection()
    {
        T selectedEntity = getSelectedEntity();
        
        T persistedEntity = null;
        
        try
        {
            persistedEntity = getEntityService().create( selectedEntity );
        }
        catch ( CreateException e )
        {
            ...

            return;
        }
        
        ...            
        
        PrimeFaces.current().ajax().addCallbackParam( "created", Boolean.TRUE );            
    }