zoukankan      html  css  js  c++  java
  • FreeMarker分页组件监听器

    分页组件监听器
    /*
     * project名:  
     * 包     名: 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
         * 改动password异常*/
        ERROR_CODE_UPDATE_PASSWORD(13076012L),    
        /**13076013
         * password复位*/
        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({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({DW});
        $("#cnt_list").css({DW-5});
        $("#cnt_list table").css({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({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({DW});
        $("#cnt_list").css({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({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({DW});
        $("#cnt_list").css({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" ? " " : 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"),
        /**表示浏览文件节点信息。并由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
         * 改动password异常*/
        ERROR_CODE_UPDATE_PASSWORD(13076012L),    
        /**13076013
         * password复位*/
        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;
        }
    }

  • 相关阅读:
    day18:正则表达式和re模块
    finance1:专业词汇
    Iterator & Iterable 和 Comparable&Comparator
    pandas中三种索引方式(.loc.iloc.ix)
    XML序列化与反序列化
    控件蓝图里控件绑定问题
    Mouse Properties(鼠标属性)
    cSV
    从父控件移除控件
    是否显示鼠标指针
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8315206.html
Copyright © 2011-2022 走看看