FreeMarker分页组件监听器

Posted 绿源2008

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FreeMarker分页组件监听器相关的知识,希望对你有一定的参考价值。

分页组件监听器
/*
 * 工程名:  
 * 包     名: com.companyName.dhm.iepgm.common.taglib
 * 文 件名: PaginatedListener.java
 * 版      权: Copyright (c) 2009 companyName All Rights Reserved.
 * 描      述: 分页组件的监听器
 * 修 改 人:
 * 修改时间:
 * 跟踪单号:
 * 修改单号:
 * 修改内容:
 */
package com.companyName.dhm.cbb.common.taglib;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import com.companyName.dhm.cbb.common.Constants;

import freemarker.template.Configuration;
import freemarker.template.ObjectWrapper;
import freemarker.template.TemplateExceptionHandler;

/**
 *
 * 分页组件监听器
 *
 * @author  
 * @version  
 * @since
 */
public class PaginatedListener implements ServletContextListener {

    public void contextInitialized( ServletContextEvent servletContextEvent ) {
        
        ServletContext context = servletContextEvent.getServletContext();
        Configuration cfg = new Configuration();
        cfg.setServletContextForTemplateLoading( context, "WEB-INF/templates");
        cfg.setTemplateUpdateDelay(0);
        cfg.setTemplateExceptionHandler(
                TemplateExceptionHandler.html_DEBUG_HANDLER);
        cfg.setObjectWrapper(ObjectWrapper.BEANS_WRAPPER);
        cfg.setDefaultEncoding( Constants.PAGE_ENCODING.getStringValue() );
        cfg.setOutputEncoding( Constants.PAGE_ENCODING.getStringValue() );
        
        context.setAttribute( Constants.DHM_PAGINATED_COMPONENT.getStringValue(), cfg);
    }
    
    public void contextDestroyed(ServletContextEvent servletContextEvent ) {
        ServletContext context = servletContextEvent.getServletContext();
        context.removeAttribute( Constants.DHM_PAGINATED_COMPONENT.getStringValue() );
    }
}


package com.companyName.dhm.cbb.common;

public enum Constants
{
    /**-1表示查询色 *??的操作结*/
    OPERATE_RESULT_ALL( "-1" ),
    /**表示执行成功,弹出成功的提示*/
    SUCCEED("1"),
    /**表示执行失败,弹出失败的提示*/
    FAILURED("0"),
    /**默认情况不弹出提示框*/
    NO_DIALOG( "2" ),
    /**资源或栏目树,上移操*/
    ORDER_UP( "UP" ),
    /**资源或栏目树,下移操*/
    ORDER_DOWN( "DOWN" ),
    /**默认的分页时候每页显色 *0条记*/
    DEFAULT_PAGE_SIZE( 10 ),
    /**页面编码*/
    PAGE_ENCODING("UTF-8"),
    /**菜单收缩*/
    MENU_COLLAPSED( 0 ),
    /**菜单伸展*/
    MENU_UNCOLLAPSED( 1 ),
    
    /**消息主体长度:中*/
    MESSAGE_LENGTH( 1024 ),
    
    /**消息主体长度:英*/
    MESSAGE_LENGTH_EN( 4000 ),
    
    RANDOM("1"), UNRANDOM("0"), STATUS_NORMAL("1"), STATUS_LOCK(
            "2"), STATUS_RESET("3"), RESETPASSWORD("888888"), COMMA(","), COMMACH(
            "[,_,]+"), DATEFORMAT24("yyyy-MM-dd HH:mm"),
            
    /**时间格式,含日期和时分秒*/
    TIME_PATTERN( "yyyy-MM-dd HH:mm:ss" ),
    /**英文字母、数字和下划色 */
    LETTERS_AND_UNDERLINES( "^\\w+$" ),
    /**中文字符和英文字色 */
    CHINESE_AND_LETTERS( "(?:[\\u4e00-\\u9fa5]*\\w*\\s*)+$" ),
    
    /**表示全局错误,并由struts2来跳转指定页色 */
    GLOBAL_ERROR("global.error"),
    /**表示全局错误,该全局错误是新打开色 *??浏览器窗口,然后由struts2来跳转到该错误页色 */
    GLOBAL_ERROR_WINDOW("global.error.window"),
    /**表示浏览文件夹节点信息,并由struts2来跳转指定页色 */
    FOLDER_SITE("foler.site"),
    /**表示浏览文件节点信息,并由struts2来跳转指定页色 */
    PAGE_SITE("page.site"),
    /**token名称,用户防止重复提色 */
    STRUTS_TOKEN_NAME ( "struts.token.name" ),
    /**DHM公共部分页面组件的标识符*/
    DHM_PAGINATED_COMPONENT( "com.dhm.companyName.paginated.freemarker.configuration" ),
    
    /********************************* 权限过滤器的常量定义 **************************************/
    /**表示无权操作的提示页色 **/
    NO_PRIVILEGE_URL("/common/noprivilege.jsp"),
    /**表示无权操作的提示页面,页面内容为纯文本不含HTML标签,主要是用于弹出框的无权提示 */
    NO_PRIVILEGE_URL_ONLY_TEXT("/common/noprivilege_text.jsp"),
    /**系统登录首页*/
    FIRST_LOGIN_URL("/"),
    /**系统注销页面*/
    LOGOUT_URL("/common/logout.jsp"),
    LOGIN_ACTION( "/login.action" ),
    /********************************* 拦截器的常量定义 **************************************/
    /**IEPG后台日志错误代码前缀*/
    ERROR_CODE_PREFIX( "system.error." ),
    /**操作代码前缀*/
    OPERATE_CODE_PREFIX( "system.operate.code." ),
    /**错误内容*/
    ERROR_MESSAGE( "errorMessage" ),
    /**数据库连接超色 */
    ERROR_CONNECT_DB( "BI-13003003:数据库连接超时异常" ),
    /**数据库访问异色 */
    ERROR_FETCH_DB( "BI-13003002:数据库访问异常" ),
    /********************************* 系统中初始化角色以及欢迎页面的定色 ***********************/
    /**表示超级管理员角*/
    SUPER_ADMINISTRAOTR_ROLE(1),
    /**表示管理员角*/
    ADMINISTRAOTR_ROLE(3),
    /**表示二次色 *??角色*/
    DEVELOPER_ROLE(4),
    /**运营管理员角色 */
    MAINTAIN_ROLE(5),
    
    /**运营人员角色的欢迎页色 */
    OSS_WELCOME_URL ( "login/oss.jsp" ),
    /**二次色 *??人员角色的欢迎页色 */
    SECOND_WELCOME_URL ( "login/second.jsp" ),
    /**系统超级管理员角色的欢迎页面*/
    SYSTEM_WELCOME_URL ( "login/system.jsp" ),
    /**其他角色的欢迎页色 */
    OTHER_WELCOME_URL ( "login/other.jsp" ),
    
    /********************************* 日志部分操作类型的定色 ***********************************/
    /**操作类型*/
    ALL_OPERATE_TYPE("0"),
    /**1 表示“新增色 *操作类型*/
    ADD_OPERATE_TYPE("1"),
    /**2 表示“编辑色 *操作类型*/
    UPDATE_OPERATE_TYPE("2"),
    /**3 表示“删除色 *操作类型*/
    DELETE_OPERATE_TYPE("3"),
    /**4 表示“其他色 *操作类型*/
    OTHER_OPERATE_TYPE( "4" ),
    
    /**用于页面显示的操作类型:“新增色 **/
    VIEW_ADD_OPERATE_TYPE("新增"),
    /**用于页面显示的操作类型:“修改色 **/
    VIEW_UPDATE_OPERATE_TYPE("修改"),
    /**用于页面显示的操作类型:“删除色 **/
    VIEW_DELETE_OPERATE_TYPE("删除"),
    /**用于页面显示的操作类型:“其他色 **/
    VIEW_OTHER_OPERATE_TYPE("其他"),
    
    /**用于页面显示的操作结果:“成功色 **/
    VIEW_OPERATE_RESULT_SUCCESS("成功"),
    /**用于页面显示的操作结果:“失败色 **/
    VIEW_OPERATE_RESULT_FAILURE("失败"),

    /************************************ 公共错误码定色 *******************************************/
    /**
     * 13002001
     * 程序错误,类型转换异常
     */
    ERROR_CODE_CLASS_CAST(13002001L),
    /**
     * 13002002
     * 程序错误,空指针异色 *
     */
    ERROR_CODE_NULL_POINT(13002002L),
    /**
     * 13003001
     * 数据库错色 *数据操作异常
     */
    ERROR_CODE_OPERATOR_DATABASE(13003001L),
    /**
     * 13003002
     * 数据库错色 *数据库访问异色 *
     */
    ERROR_CODE_ACCESS_DATABASE(13003002L),
    /**
     * 13003003
     * 数据库错色 *数据库连接超时异色 *
     */
    ERROR_CODE_CONNECT_DATABASE(13003003L),
    /********************************** 角色管理错误代码定义 ***************************************/
    /** 13096001
     * 添加角色异常
     */
    ERROR_CODE_ADD_ROLE(13096001L),
    /** 13096002
     * 删除角色异常 */
    ERROR_CODE_DELETE_ROLE(13096002L),
    /** 13096003
     * 编辑角色异常 */
    ERROR_CODE_UPDATE_ROLE(13096003L),
    /** 13096004
     * 查询角色异常 */
    ERROR_CODE_QUERY_ROLE(13096004L),
    /** 13096005
     * 浏览角色异常 */
    ERROR_CODE_BROWSE_ROLE(13096005L),
    /** 13096006
     * 角色操作权限设定异常
     */
    ERROR_CODE_ASSIGN_PRIVILEGE_TO_ROLE(13096006L),
    /** 13096007
     * 角色色 *??用户设定异常 */
    ERROR_CODE_ASSIGN_USER_TO_ROLE(13096007L),
    /** 13096008
     * 角色色 *??用户异常 */
    ERROR_CODE_ASSIGN_ROLE_TO_USER(13096008L),
    /** 13096009
     * 查询用户拥有的权限异色 **/
    ERROR_CODE_QUERY_PRIVILEGES_FOR_USER(13096009L),
    /** 13096010
     * 查询角色赋予情况异常 */
    ERROR_CODE_QUERY_ROLES_ASSIGNED(13096010L),
    /** 13096011
     * 查询色 *??权限异常 */
    ERROR_CODE_QUERY_ALL_PRIVILEGES(13096011L),
    /** 13096012
     * 查询用户色 *??有的色 *??角色异常 */
    ERROR_CODE_QUERY_ALL_ROLES_BY_USER(13096012L),
    /** 13096013
     * 查询角色赋予的所有用户异色 **/
    ERROR_CODE_QUERY_ALL_USERS_BY_ROLE(13096013L),
    /** 13096014
     * 查询角色色 *??有的色 *??权限异常 */
    ERROR_CODE_QUERY_ALL_PRIVILEGES_ASSIGNED_BY_ROLE(13096014L),
    /** 13096015
     * 查询未赋予该角色的所有用户异色 **/
    ERROR_CODE_QUERY_ALL_USERS_UNASSIGNED_BY_ROLE(13096015L),
    /** 13096016
     * 批量插入用户和角色之间的关系异常 */
    ERROR_CODE_BATCH_INSERT_USERS_AND_ROLE_RELATIONSHIP(13096016L),
    /** 13096017
     * 删除角色色 *??有的色 *??权限角色异常 */
    ERROR_CODE_DELETE_PRIVIELEGES_ASSIGNED_BY_ROLE(13096017L),
    /** 13096018
     * 删除用户和角色之间的关系异常 */
    ERROR_CODE_REMOVE_USER_AND_ROLE_RELATIONSHIP(13096018L),
    /** 13096019
     * 查询角色总数异常 */
    ERROR_CODE_QUERY_ROLES_COUNT(13096019L),
    
    /********************************** 日志管理误代码定色 ****************************************/
    /** 13116001
     * 查询日志详情异常 */
    ERROR_CODE_QUERY_LOG_DETAIL(13116001L),
    /** 13116002
     * 查询日志异常 */
    ERROR_CODE_QUERY_LOG ( 13116002L),

    /********************************** 用户管理错误代码定义 ***************************************/
    
    /** 13076001
     * 新增用户信息异常*/
    ERROR_CODE_ADD_USER(13076001L),
    /**13076002
     * 根据用户id删除用户信息异常*/
    ERROR_CODE_DELETE_USER_BY_ID(13076002L),
    /**13076003
     * 修改用户信息异常*/
    ERROR_CODE_UPDATE_USER(13076003L),
    /**13076004
     * 查询用户信息异常*/
    ERROR_CODE_QUERY_USER(13076004L),
    /**13076005
     * 浏览用户信息异常*/
    ERROR_CODE_BROWSE_USER(13076005L),
    /**13076006
     * 用户帐号锁定异常*/
    ERROR_CODE_USER_LOCK(13076006L),
    /**13076007
     * 用户帐号解锁异常*/
    ERROR_CODE_USER_RELOCK(13076007L),
    /**13076008
     * 根据登录用户查询用户信息异常*/
    ERROR_CODE_QUERY_USER_BY_LOGINNAME(13076008L),
    /**13076009
     * 根据用户id删除用户角色关系异常*/
    ERROR_CODE_DELETE_USER_ROLE_RELATIONSHIP_BY_ID(13076009L),
    /**13076010
     * 批量增加用户角色关系异常*/
    ERROR_CODE_BATCH_INSERT_USERS_ROLE_RELATIONSHIP(13076010L),
    /**13076011
     * 修改个人信息异常*/
    ERROR_CODE_EDIT_USER_PRO(13076011L),
    /**13076012
     * 修改密码异常*/
    ERROR_CODE_UPDATE_PASSWORD(13076012L),    
    /**13076013
     * 密码复位*/
    ERROR_CODE_UPDATE_RESETPASSWORD(13076013L);
    
    private byte byteValue;
    
    public byte getByteValue()
    {
        return this.byteValue;
    }
    
    Constants(byte byteValue)
    {
        this.byteValue = byteValue;
    }
    
    private int intValue;
    
    public int getIntValue()
    {
        return this.intValue;
    }
    
    /**
     * @param intValue
     */
    Constants(int intValue)
    {
        this.intValue = intValue;
    }
    
    private String strValue;
    
    private long longValue;
    
    public String getStringValue()
    {
        return this.strValue;
    }
    
    public long getLongValue()
    {
        return this.longValue;
    }
    
    Constants(String value)
    {
        this.strValue = value;
    }
    
    Constants(long errorCode)
    {
        this.longValue = errorCode;
    }
    
    public String toString()
    {
        return this.strValue;
    }
}


dialogShow.js
function showText(dialogTitle,textCnt,dialogW,dialogH,imgNum,showTipImg)
{
    if(showTipImg == true)
    {
        var  img_select;
        if(imgNum == 1) {
            img_select = "<img src=‘../images/bg_tipsuccess.png‘/>";
        }else if(imgNum == 2) {
            img_select = "<img src=‘images/bg_tipsuccess.png‘/>";
        }else {
            img_select = "<img src=‘../images/bg_tipfailth.png‘/>";
        }
    }
    else
    {
        var  img_select = "";
    }
    
    textCnt = decodeURI( textCnt );
    $("body").append("<div id=‘dialogbg‘></div><div id=‘dialog‘><h2 id=‘dialog_title‘>"+dialogTitle+"<p id=‘btn_closedialog‘></p></h2><div id=‘cnt_list‘><table wborder=‘0‘ cellspacing=‘0‘ cellpadding=‘0‘><tr><td valign=‘middle‘ id=‘text_color‘>"+img_select+textCnt+"</td></tr></table></div><div id=‘btn_list‘><input type=‘button‘ value=‘关闭‘ id=‘btn_dsure‘/></div></div>");
    (imgNum == 1 || imgNum == 2)?$("#text_color").css({color:"#333"}):$("#text_color").css({color:"#C40000"});
    $("body input,body button").blur();
    $("#dialog").css({width:dialogW});
    $("#dialog").css({height:dialogH});
    var DW = $("#dialog").width();
    var DH = $("#dialog").height()-77;
    var webH = document.body.scrollHeight;
    var webvH =document.documentElement.clientHeight + document.documentElement.scrollTop ;
    var getH = (webH > webvH)?webH:webvH;
    $("#dialogbg").height(getH + "px");
    document.getElementById("dialog").style.left = (document.body.offsetWidth-$("#dialog").width()-2)/2 + "px";
    document.getElementById("dialog").style.top = (document.documentElement.clientHeight-$("#dialog").height()-2)/2 + document.documentElement.scrollTop + "px";
    $("#btn_list").css({width:DW});
    $("#cnt_list").css({width:DW-5});
    $("#cnt_list table").css({width:DW-20});
    $("#cnt_list,#cnt_list table").css({height:DH});
    $("#btn_closedialog,#btn_dsure").click(function()
     {
        var dialog = $( "#showSuccessDialog" );
        dialog.val( ‘2‘ );
        $("#dialogbg,#dialog").remove();
        
        //如果是IE6浏览器,select标签才需要隐藏
        if ( $.browser.msie && $.browser.version == ‘6.0‘ ) {
            $("select").css({visibility:"visible"});
        }
        
     });
    
    //如果是IE6浏览器,select标签才需要隐藏
    if ( $.browser.msie && $.browser.version == ‘6.0‘ ) {
        $("select").css({visibility:"hidden"});
        $("#dialog select").css({visibility:"visible"});
    }
    
    moveWindow("dialog","dialog_title");
}

function showPage(dialogTitle,pageName,dialogW,dialogH)
{
    $("body").append("<div id=‘dialogbg‘></div><div id=‘dialog‘><h2 id=‘dialog_title‘>"+dialogTitle+"<p id=‘btn_closedialog‘></p></h2><iframe name=‘framelist‘ id=‘framelist‘ frameborder=‘0‘ src="+pageName+" height=‘auto‘></iframe><div id=‘btn_list‘><input type=‘button‘ value=‘关闭‘ id=‘btn_dsure‘/></div></div>");
    //var gH = top.frames["framelist"].document.body.scrollHeight;
    //alert(gH);
    $("input,body button").blur();
    $("#dialog").css({width:dialogW});
    $("#dialog").css({height:dialogH});
    var DW = $("#dialog").width();
    var DH = $("#dialog").height()-75;
    var webH = document.body.scrollHeight;
    var webvH =document.documentElement.clientHeight + document.documentElement.scrollTop ;
    var getH = (webH > webvH)?webH:webvH;
    $("#dialogbg").height(getH + "px");
    document.getElementById("dialog").style.left = (document.body.offsetWidth-$("#dialog").width()-2)/2 + "px";
    document.getElementById("dialog").style.top = (document.documentElement.clientHeight-$("#dialog").height()-2)/2 + document.documentElement.scrollTop + "px";
    $("#btn_list").css({width:DW});
    $("#cnt_list").css({width:DW});
    $("#framelist").css({padding:"5px",overflow:"hidden"});
    $("#framelist").attr("width",DW-10);
    $("#framelist").attr("height",DH-10);
    //$("#cnt_list iframe").attr("width",DW);
    $("#btn_closedialog,#btn_dsure").click(function()
     {
        var dialog = $( "#showSuccessDialog" );
        dialog.val( ‘2‘ );
        $("#dialogbg,#dialog").remove();
        //如果是IE6浏览器,select标签才需要隐藏
        if ( $.browser.msie && $.browser.version == ‘6.0‘ ) {
            $("select").css({visibility:"visible"});
        }
     });
    
    //如果是IE6浏览器,select标签才需要隐藏
    if ( $.browser.msie && $.browser.version == ‘6.0‘ ) {
        $("select").css({visibility:"hidden"});
        $("#dialog select").css({visibility:"visible"});
    }
    moveWindow("dialog","dialog_title");
    
    return false;
}

function showPageByWithScroll(dialogTitle,pageName,dialogW,dialogH)
{
    $("body").append("<div id=‘dialogbg‘></div><div id=‘dialog‘><h2 id=‘dialog_title‘>"+dialogTitle+"<p id=‘btn_closedialog‘></p></h2><iframe name=‘framelist‘ id=‘framelist‘ frameborder=‘0‘ src="+pageName+" height=‘auto‘></iframe><div id=‘btn_list‘><input type=‘button‘ value=‘关闭‘ id=‘btn_dsure‘/></div></div>");
    //var gH = top.frames["framelist"].document.body.scrollHeight;
    //alert(gH);
    $("input,body button").blur();
    $("#dialog").css({width:dialogW});
    $("#dialog").css({height:dialogH});
    var DW = $("#dialog").width();
    var DH = $("#dialog").height()-75;
    var webH = document.body.scrollHeight;
    var webvH =document.documentElement.clientHeight + document.documentElement.scrollTop ;
    var getH = (webH > webvH)?webH:webvH;
    $("#dialogbg").height(getH + "px");
    document.getElementById("dialog").style.left = (document.body.offsetWidth-$("#dialog").width()-2)/2 + "px";
    document.getElementById("dialog").style.top = (document.documentElement.clientHeight-$("#dialog").height()-2)/2 + document.documentElement.scrollTop + "px";
    $("#btn_list").css({width:DW});
    $("#cnt_list").css({width:DW});
    var getua = navigator.userAgent;
    if(/Gecko/.test(getua))
    {
        $("#framelist").css({padding:"5px",overflow:"scroll","overflow-x":"hidden"});
    }
    else
    {
        $("#framelist").css({padding:"5px",overflow:"hidden"});
    }
    
    $("#framelist").attr("width",DW-10);
    $("#framelist").attr("height",DH-10);
    //$("#cnt_list iframe").attr("width",DW);
    $("#btn_closedialog,#btn_dsure").click(function()
     {
        var dialog = $( "#showSuccessDialog" );
        dialog.val( ‘2‘ );
        $("#dialogbg,#dialog").remove();
        //如果是IE6浏览器,select标签才需要隐藏
        if ( $.browser.msie && $.browser.version == ‘6.0‘ ) {
            $("select").css({visibility:"visible"});
        }
     });
    
    //如果是IE6浏览器,select标签才需要隐藏
    if ( $.browser.msie && $.browser.version == ‘6.0‘ ) {
        $("select").css({visibility:"hidden"});
        $("#dialog select").css({visibility:"visible"});
    }
    moveWindow("dialog","dialog_title");
    
    return false;
}


function moveWindow(windowID,windowHandleID)
{
        var box = document.getElementById(windowID);    
        var boxHandle = document.getElementById(windowHandleID);
        var mx, my, ox, oy;
        function e(event){
           if( ! event){
              event = window.event;
              event.target = event.srcElement;
              event.layerX = event.offsetX;
              event.layerY = event.offsetY;
           }
           event.mx = event.pageX || event.clientX + document.body.scrollLeft;
           event.my = event.pageY || event.clientY + document.body.scrollTop;     
           return event;     
        }
        boxHandle.onmousedown = moveEvent;
        function moveEvent(event){     
           event = e(event);     
           ox = parseInt(box.offsetLeft);     
           oy = parseInt(box.offsetTop);     
           mx = event.mx;     
           my = event.my;     
           boxHandle.onmousemove = moveBox;     
           boxHandle.onmouseup = stopBox;     
        }
        function moveBox(event){     
           event = e(event);
           box.style.left = ox + event.mx - mx  + "px";    
           box.style.top = oy + event.my - my + "px";    
        }
        function stopBox(event){     
           //alert(‘‘);
           event = e(event);
           ox = parseInt(box.offsetLeft);     
           oy = parseInt(box.offsetTop);     
           mx = event.mx ;     
           my = event.my ;     
           boxHandle.onmousemove = boxHandle.onmouseup = null;     
        }
        
}

/**去掉字符串前后的空格*/
String.prototype.trim = function(){  
    // 用正则表达式将前后空格  
    // 用空字符串替代。  
    return this.replace(/(^\s*)|(\s*$)/g, "");  
};

/**显示成功的窗口*/
function showSuccessWindow( successMessageContent, failuredMessageContent ) {
    var dialog = $( "#showSuccessDialog" );
    var show = dialog.val();
    if ( show != ‘0‘ && show != ‘2‘ ) {
        showText(‘提示信息‘, successMessageContent,400,200,1,true);
        $("#dialogbg,#dialog").fadeOut(5000,function(){
            $(this).remove();
            dialog.val( ‘2‘ );
            $("select").css({visibility:"visible"});
            $("#dialog select").css({visibility:"visible"});
        });
    }
    
    if ( show != ‘1‘ && show != ‘2‘ ) {
        showText(‘提示信息‘, failuredMessageContent,400,200,0,true);
        $("#dialogbg,#dialog").fadeOut(5000,function(){
            dialog.val( ‘2‘ );
            $(this).remove();
            $("select").css({visibility:"visible"});
            $("#dialog select").css({visibility:"visible"});
        });
    }
}
/**显示成功的窗口*/
function showSuccessWindowLogin( successMessageContent, failuredMessageContent ) {
    var dialog = $( "#showSuccessDialog" );
    var show = dialog.val();
    if(typeof show != "undefined" && show.length != 0){
    if ( show != ‘0‘ && show != ‘2‘ ) {
        showText(‘提示信息‘, successMessageContent,400,200,2,true);
        $("#dialogbg,#dialog").fadeOut(3000,function(){dialog.val( ‘2‘ );$(this).remove();});
    }
    
    if ( show != ‘1‘ && show != ‘2‘ ) {
        showText(‘提示信息‘, failuredMessageContent,400,200,0,true);
        $("#dialogbg,#dialog").fadeOut(3000,function(){dialog.val( ‘2‘ );$(this).remove();});
    }
    }
}
/**显示失败的窗口*/
function showFailuredWindow( failuredMessageContent ) {
    var dialog = $( "#showSuccessDialog" );
    var show = dialog.val();
    
    if ( show != ‘1‘ && show != ‘2‘ ) {
        showText(‘提示信息‘, failuredMessageContent,400,200,0,true);
        $("#dialogbg,#dialog").fadeOut(8000,function(){dialog.val( ‘2‘ );$(this).remove();});
    }
}

/**对&gt;解码成>,然后在用encodeURI进行统一编码。*/
function decode( str ) {
    if ( str == null ) {
        return null;
    }
    
    str = str.replace(/\&gt;/g, ">");
    str = str.replace(/\&lt;/g, "<");
    str = str.replace(/\&amp;/g, "&");
    
    return str;
}

/**弹出角色详情的对话框*/
function showRoleDetailDialog( link, messageTip ) {
    var id = link.id;
    link.href = "###";
    var table = document.getElementById( "roleList" ).rows[ id ];
    var roleName = link.innerHTML.trim();
    var queryString = ‘role.roleName=‘+roleName+"&noPrivilegeOnlyText=true";
    //queryString = encodeURI( queryString);
    showPage( messageTip,‘../RoleManage/BrowseRoleDetail.action?‘+queryString, 610, 260 );
}

/**弹出用户详情的对话框*/
function showAdminDetailDialog( link, messageTip ) {
    var id = link.id;
    link.href = "###";
    var table = document.getElementById( "adminsList" ).rows[ id ];
    var loginName       = table.cells[1].innerHTML.trim();
    var userName        = link.innerHTML.trim();
    var status          = table.cells[3].innerHTML.trim();
    var roleList          = table.cells[4].innerHTML.trim();
    var email            = table.cells[5].innerHTML.trim();
    var phone             = table.cells[6].innerHTML.trim();
    var buffer = new StringBuffer();
    buffer.append( "admin.loginName=" );
    buffer.append( loginName );
    buffer.append( "&admin.username=" );
    buffer.append( decode(userName) );
    buffer.append( "&admin.status=" );
    buffer.append( status );
    buffer.append( "&admin.role=" );
    buffer.append( roleList );
    buffer.append( "&admin.email=" );
    buffer.append( email );
    buffer.append( "&admin.phone=" );
    buffer.append( phone );
    buffer.append( "&noPrivilegeOnlyText=true" );
    
    var queryString = encodeURI( buffer.toString() );
    
    showPage(messageTip,‘../admin/adminView.action?‘+queryString, 610, 300 );
}

/**弹出日志详情的对话框*/
function showLogDetailDialog( link, messageTip ) {
    var id = link.id;
    link.href = "###";
    var table = document.getElementById( "logList" ).rows[ id ];
    var operateDate    = table.cells[0].innerHTML.trim();
    var operator       = table.cells[1].innerHTML.trim();
    var operateModule  = table.cells[2].innerHTML.trim();
    var operateObject  = table.cells[3].innerHTML.trim();
    var ipAddr         = table.cells[6].innerHTML.trim();
    var operateType    = table.cells[7].innerHTML.trim();
    var operateResult  = table.cells[8].innerHTML.trim();
    var operateDesc    = table.cells[9].innerHTML.trim();
    var logId            = table.cells[10].innerHTML.trim();
    
    var buffer = new StringBuffer();
    buffer.append( "logBean.logId=" );
    buffer.append( logId );
    buffer.append( "&noPrivilegeOnlyText=true" );
    buffer.append( "&errorPageWindow=true" );
    
    var queryString = encodeURI( buffer.toString() );    
    showPage( messageTip,‘../SysManage/BrowseLogDetail.action?‘ + queryString, 610, 420);
}

/** firefox 不支持innerText 方法 ,要支持要加一段脚本 */
function isIE(){
    if (window.navigator.userAgent.toLowerCase().indexOf("msie")>=1)
        return true;
    else
        return false;
    }

    if(!isIE()){
        HTMLElement.prototype.__defineGetter__("innerText",
        function(){
            var anyString = "";
            var childS = this.childNodes;
            for(var i=0; i<childS.length; i++) {
                if(childS[i].nodeType==1)
                    //anyString += childS[i].tagName=="BR" ? "\n" : childS[i].innerText;
                    anyString += childS[i].innerText;
                else if(childS[i].nodeType==3)
                    anyString += childS[i].nodeValue;
            }
            return anyString;
        }
        );
        HTMLElement.prototype.__defineSetter__("innerText",
        function(sText){
            this.textContent=sText;
        }
        );
    }
    
    /**定义StringBuffer类*/
    function StringBuffer()   
    {   
        this._strings = [];   
        if(arguments.length==1)   
        {   
            this._strings.push(arguments[0]);   
        }   
    };   
      
    StringBuffer.prototype.append = function(str)   
    {   
        this._strings.push(str);   
        return this;   
    };  
      
    StringBuffer.prototype.toString = function()   
    {   
        return this._strings.join("");   
    };
      
    /* 返回长度 */  
    StringBuffer.prototype.length = function()   
    {   
        var str = this._strings.join("");   
        return str.length;   
    };
 
 
 paginated.ftl
 
<#if page.totalPages != 0 >
<form action="${page.url}" method="post" id="page_queryActionForm_${page.id}" onsubmit="return paginated_form_submit_${page.id}(this, ${page.id});">

<#list page.hiddenParams.keySet() as key>
        <#assign item = page.hiddenParams[key]>
        <input type="hidden" name="${key}" value="${item}" />
</#list>
<div class="right">
    <img src="../images/in_r.jpg" width="5" height="30" />
</div>
<div class="page">
    <div id="paginated_total_page_id"> ${page.totalPagesLabel}${page.currentPage?c}/${page.totalPages?c}</div>
    <div>
        
        <#if page.currentPage == page.totalPages>
            <#if page.totalPages == 1>
                <a href="#" class="act1" disabled onClick="javascript:window.event.returnValue=false;">&lt;&lt;</a>  
                <a href="#" class="act1" disabled onClick="javascript:window.event.returnValue=false;">&lt;</a>
                <div class="ft">${page.currentPage?c}</div>
                <a href="#" class="act">&gt;</a>  
                <a href=‘${page.url}?${page.queryString}&currentPage=1&pageSize=${page.pageSize}‘ class="act">&gt;&gt;</a>
            <#else>
                <a href=‘${page.url}?${page.queryString}&currentPage=1&pageSize=${page.pageSize}‘ class="act">&lt;&lt;</a>  
                <a href="${page.url}?${page.queryString}&currentPage=${page.currentPage-1}&pageSize=${page.pageSize}" class="act">&lt;</a>
                <div class="ft">${page.currentPage?c}</div>
                <a href="#" class="act1" disabled onClick="javascript:window.event.returnValue=false;">&gt;</a>  
                <a href="#" class="act1" disabled onClick="javascript:window.event.returnValue=false;">&gt;&gt;</a>
            </#if>
        <#else>
            <#if page.currentPage == 1 >
                <a href="#" class="act1" disabled onClick="javascript:window.event.returnValue=false;">&lt;&lt;</a>  
                <a href="#" class="act1" disabled onClick="javascript:window.event.returnValue=false;">&lt;</a>
                <div class="ft">${page.currentPage?c}</div>
                <a href="${page.url}?${page.queryString}&currentPage=${page.currentPage+1}&pageSize=${page.pageSize}" class="act">&gt;</a>  
                <a href=‘${page.url}?${page.queryString}&currentPage=${page.totalPages}&pageSize=${page.pageSize}‘ class="act">&gt;&gt;</a>
            <#elseif page.currentPage == page.totalPages>
                <a href=‘${page.url}?${page.queryString}&currentPage=1&pageSize=${page.pageSize}‘ class="act">&lt;&lt;</a>  
                <a href="${page.url}?${page.queryString}&currentPage=${page.currentPage-1}&pageSize=${page.pageSize}" class="act">&lt;</a>
                <div class="ft">${page.currentPage?c}</div>
                <a href="#" class="act1" disabled onClick="javascript:window.event.returnValue=false;">&gt;</a>  
                <a href="#" class="act1" disabled onClick="javascript:window.event.returnValue=false;">&gt;&gt;</a>
            <#else>
                <a href=‘${page.url}?${page.queryString}&currentPage=1&pageSize=${page.pageSize}‘ class="act">&lt;&lt;</a>  
                <a href="${page.url}?${page.queryString}&currentPage=${page.currentPage-1}&pageSize=${page.pageSize}" class="act">&lt;</a>
                <div class="ft">${page.currentPage?c}</div>
                <a href="${page.url}?${page.queryString}&currentPage=${page.currentPage+1}&pageSize=${page.pageSize}" class="act">&gt;</a>  
                <a href=‘${page.url}?${page.queryString}&currentPage=${page.totalPages}&pageSize=${page.pageSize}‘ class="act">&gt;&gt;</a>
            </#if>
        </#if>
    </div>
    <div>${page.jumpLabel}<input type="text" name="currentPage" value="${page.currentPage?c}" size="2" class="input" id="page_currentPage_${page.id}"/></div>
    <div>
        <input type="image" src="../images/lisure.jpg" class="but" id="page_queryActionButton_${page.id}" onclick="paginated_button_submit_${page.id}(this, ${page.id});"/>
    </div>
</div>
<div class="page">
    <div>${page.pageSizeLabel}</div>
    <div id="con_psbox">
        <select class="page_selectbox" name="pageSize" id="paginated_pageSize_${page.id}" onchange="paginated_pageSize_change_${page.id}( this, ${page.id} );">
            <#list page.pageSelected as pageSize>
                <option value="${pageSize}" <#if pageSize?eval == page.pageSize>selected="selected"</#if>>${pageSize}</option>
            </#list>
        </select> <span>${page.pageSizeLabelPostfix}</span>
    </div>
</div>
<div class="page">
    <div>${page.totalRowlLabel}${page.totalRows?c}${page.pageSizeLabelPostfix}</div>
</div>
</form>
<script type="text/javascript" src="../js/dialogShow.js"></script>
<script type="text/javascript">
    function isNaturalNumber( value ) {
        if ( value == null ) {return false;}
        if ( value == ‘‘ || value == null ) {return false;}
        if (/^[0-9]+$/.test( value ) && ( value > 0)) {
            return true;
        } else  {  
            return false;
        }
    }
    function paginated_pageSize_change_${page.id}(select,id) {
        $( "#page_currentPage_" + id ).val(1);
        var form = $("#page_queryActionForm_" + id);
        $( form ).submit();
    }
    
    function paginated_button_submit_${page.id}( button,id ) {
        var input = $( "#page_currentPage_" + id ).val();
        var form = $("#page_queryActionForm_" + id);
        if ( !isNaturalNumber (input) ) {
            showText(‘信息提示‘,‘当前页应该是自然数,请重新输入!‘,400,200,0,false);
            form[0].onsubmit = function(){ return false; };
        } else {
            var div = $( button ).parent().prev();
            var totalLabel = div.prev().prev().html();
            var totalPage = totalLabel.split( "/" )[1];
            if ( parseInt(input) > parseInt(totalPage) ) {
                showText(‘信息提示‘,‘当前页不能大于总页数,请重新输入!‘,400,200,0,false);
                form[0].onsubmit = function(){ return false; };
            } else {
                form[0].onsubmit = function(){ return true; };
            }
        }
    }
    
    function paginated_form_submit_${page.id}( f, id ) {
        var input = $( "#page_currentPage_" + id ).val();
        var form = $( f );
        if ( !isNaturalNumber (input) ) {
            showText(‘messageTip‘,‘当前页应该是自然数,请重新输入!‘,400,200,0,false);
            return false;
        } else {
            var div = $( "#paginated_total_page_id" );
            var totalLabel = div.html();
            var totalPage = totalLabel.split( "/" )[1];
            if ( parseInt(input) > parseInt(totalPage) ) {
                showText(‘信息提示‘,‘当前页不能大于总页数,请重新输入!‘,400,200,0,false);
                return false;
            } else {
                return true;
            }
        }
    }
</script>
<#else>
<div class="right">
<img height="30" width="5" src="../images/in_r.jpg"/>
</div>
</#if>


package com.companyName.dhm.cbb.common;

public enum Constants
{
    /**-1表示查询色 *??的操作结*/
    OPERATE_RESULT_ALL( "-1" ),
    /**表示执行成功,弹出成功的提示*/
    SUCCEED("1"),
    /**表示执行失败,弹出失败的提示*/
    FAILURED("0"),
    /**默认情况不弹出提示框*/
    NO_DIALOG( "2" ),
    /**资源或栏目树,上移操*/
    ORDER_UP( "UP" ),
    /**资源或栏目树,下移操*/
    ORDER_DOWN( "DOWN" ),
    /**默认的分页时候每页显色 *0条记*/
    DEFAULT_PAGE_SIZE( 10 ),
    /**页面编码*/
    PAGE_ENCODING("UTF-8"),
    /**菜单收缩*/
    MENU_COLLAPSED( 0 ),
    /**菜单伸展*/
    MENU_UNCOLLAPSED( 1 ),
    
    /**消息主体长度:中*/
    MESSAGE_LENGTH( 1024 ),
    
    /**消息主体长度:英*/
    MESSAGE_LENGTH_EN( 4000 ),
    
    RANDOM("1"), UNRANDOM("0"), STATUS_NORMAL("1"), STATUS_LOCK(
            "2"), STATUS_RESET("3"), RESETPASSWORD("888888"), COMMA(","), COMMACH(
            "[,_,]+"), DATEFORMAT24("yyyy-MM-dd HH:mm"),
            
    /**时间格式,含日期和时分秒*/
    TIME_PATTERN( "yyyy-MM-dd HH:mm:ss" ),
    /**英文字母、数字和下划色 */
    LETTERS_AND_UNDERLINES( "^\\w+$" ),
    /**中文字符和英文字色 */
    CHINESE_AND_LETTERS( "(?:[\\u4e00-\\u9fa5]*\\w*\\s*)+$" ),
    
    /**表示全局错误,并由struts2来跳转指定页色 */
    GLOBAL_ERROR("global.error"),
    /**表示全局错误,该全局错误是新打开色 *??浏览器窗口,然后由struts2来跳转到该错误页色 */
    GLOBAL_ERROR_WINDOW("global.error.window"),
    /**表示浏览文件夹节点信息,并由struts2来跳转指定页色 */
    FOLDER_SITE("foler.site"),
    /**表示浏览文

以上是关于FreeMarker分页组件监听器的主要内容,如果未能解决你的问题,请参考以下文章

DRF的分页组件,过滤组件

antd 封装弹窗编辑组件 分页组件

vue组件 下拉框分页

分页器组件

DRF ---- 过滤组件 分页组件 过滤组件插件使用

基于Vue.js的表格分页组件