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;
        }
    }

  • 相关阅读:
    cnblog项目--20190309
    django js引入失效问题
    Python老男孩 day16 函数(六) 匿名函数
    Python老男孩 day16 函数(五) 函数的作用域
    Python老男孩 day15 函数(四) 递归
    Python老男孩 day15 函数(三) 前向引用之'函数即变量'
    Python老男孩 day15 函数(二) 局部变量与全局变量
    Python老男孩 day14 函数(一)
    Python老男孩 day14 字符串格式化
    Python老男孩 day14 集合
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8315206.html
Copyright © 2011-2022 走看看