如何在页面更改期间有条件地停止执行<p:datatable>的页面事件</p:datatable>

时间:2013-04-05 03:53:15

标签: jsf-2 primefaces

在我的应用程序中,我使用惰性数据模型进行了<p:dataTable>分页。

当我从页面点击另一个页面按钮时,我有一个要求,如果我点击yes,我会点击<h:form id="userListForm"> <p:dataTable var="user" id="userTable" value="#{userListController.userDataModel}" lazy="true" paginator="true" rows="25" paginatorPosition="bottom" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="25,50,100" widgetVar="userDataTable" styleClass="userTable" selectionMode="single" > <p:ajax event="page" /> <p:column id="nameColumn" headerText="#{adbBundle['name']}" sortBy="#{user.fullName}" filterBy="#{user.fullName}" styleClass="userName"> <h:outputText value="#{user.fullName}" /> </p:column> <!-- other columns --> <:/p:dataTable> </h:form> 然后我可以转到另一个页面,如果我点击“否”,那么我就不能生成确认弹出窗口转到另一页,我会留在当前页面。

.xhtml代码如下:

{{1}}

我正在使用primefaces 3.4,jsf 2.0。

2 个答案:

答案 0 :(得分:1)

受到RongNK答案的启发,你可以这样做,

添加此脚本块:

<script type="text/javascript">
    function onPageStart() {
        return confirm('Are you sure?');
    }
</script>

并将其放入数据表:

<p:ajax event="page" onstart="return onPageStart()" />

你也可以用<p:ajax这种方式内联它:

<p:ajax event="page" onstart="return confirm('Are you sure?');" />

使用PrimeFaces 3.4.2进行测试和使用

答案 1 :(得分:0)

你有没有尝试过:

<p:ajax event="page" onstart="return tests()"/>

<script type="text/javascript">
                var vpage = 1;
                var prevvalue = vpage;
                function tests(){
                    if(confirm('Are you sure?')){
                        var p = userDataTable.getPaginator();
                        vpage = p.getCurrentPage();
                        prevvalue = vpage;
                        return true;}
                    else {
                        var p = userDataTable.getPaginator();
                        p.setPage(prevvalue,true);
                        return false;}
                }
            </script>