开发小记

作者: 流河 | 来源:发表于2014-11-28 11:15 被阅读40次

    开发小记

    禁止页面滚动
    js

    document.body.style.overflow='hidden';
    

    jquery

    $('body').css('overflow','hidden');
    

    监听input的输入事件

    // propertychange 事件是针对ie浏览器的,要放到input事件前面     
    $('#boardlot_num').on('propertychange input',function(){
        // do something
    }
    

    绑定input事件的时候我发现以前用的autoNumerbic 跟它 会有冲突:

    chrome 和 firefox 支持input事件,绑定autoNumberic插件后,自定义的input事件失效

    于是我做了一点关于input限制输入纯数字的解决方案:
    html代码 :

    <input id="boardlot_num" value="1" data-pre="1" />  
    

    js代码:

    $('#boardlot_num').on('propertychange input',function(){
            var value = $(this).val(), preValue = $(this).data('pre');
            if(/^\d*$/.test(value)){
                // do something
                $('#boardlot_num').data('pre',value);
            }else{
                $('#boardlot_num').val(preValue);
            }
    });
    // 兼容chrome firefox ie8 亲测有效
    

    按List中的对象的属性排序

    // 查询list      
    List<MallProductTeambattleSignup> ogSigns = mallProductTeambattleSignupServ.list(propsSignup, 1, 8, null);     
    // 初始化比较器,比较器的泛型为list的泛型     
    Comparator<MallProductTeambattleSignup> comparator = new Comparator<MallProductTeambattleSignup>() {   
        @Override   
        public int compare(MallProductTeambattleSignup o1, MallProductTeambattleSignup o2) {    
            // 按count属性按降序排    
            return o2.getCount() - o1.getCount();     
        }    
    };     
    // 调用Colloctions接口对list排序      
    Collections.sort(ogSigns, comparator);     
    

    Git 配置 path
    配置 ...\Git\bin 和 Git\libexec\git-core

    sql执行顺序

    1. from子句组装来自不同数据源的数据;
    2. where子句基于指定的条件对记录行进行筛选;
    3. group by子句将数据划分为多个分组;
    4. 使用聚集函数进行计算;
    5. 使用having子句筛选分组;
    6. 计算所有的表达式;
    7. 使用order by对结果集进行排序
    (8)SELECT (9)DISTINCT 
    (11)<TOP_specification> <select_list> 
    (1)FROM <left_table> 
    (3)<join_type> JOIN <right_table> 
    (2)ON <join_condition> 
    (4)WHERE <where_condition> 
    (5)GROUP BY <group_by_list> 
    (6)WITH {CUBE ROLLUP} 
    (7)HAVING <having_condition> 
    (10)ORDER BY <order_by_list> 
    

    打乱一个list的顺序
    应用场景:
    我要做援购的随机取援购码,但他们在数据库中是数据存在的,于是乎,有多种方法:乱序存顺序遍历顺序存乱序遍历等等。
    这里利用了一个小技巧,顺序存,读取之后打乱,再顺序取,基本代码如下:

    List<?> unusedCodes = xxx.list(****);
    // shuffle 是 洗牌的意思
    java.util.Collections.shuffle(unusedCodes);
    
    // 遍历,不赘述      
    for(...){
      // TODO ...
    }
    

    java基础真的很重要。这道题当作是一道面试题都行。

    js 获取url参数

    var mycode = window.location.search.substr(1).split("&")[0];           
    mycode = mycode.split('=')[1];
    

    数据库类型用的date类型非datetime类型报batch_update错误
    RT

    mysql group_concat() 陷阱
    mysql配置group_concat()函数最长可接收1024长度,对于某些情景下这个长度是不够的。

    查询语句:

    SELECT @@global.group_concat_max_len;
    

    修改语句:

    -- 大小请自行斟酌
    SET GLOBAL group_concat_max_len=102400;
    

    也可以在文件(my.ini)中后边追加这一句:

    group_concat_max_len = 102400   
    

    注:我用的mysql是5.6.20,文件在C:\ProgramData\MySQL\MySQL Server 5.6\my.ini

    关于hql查询和sql查询
    hql查询用user_iduserId这两种形式都好使(前提是po用的userId形式,dao层用getCurrentSession,如果用openSession是无效的)

    关于转义
    经过我这段时间的观察,有以下几个地方会出问题:

    • 后台拼接html返回页面。对于开放输入的内容要用StrUtil.escapeHtml()方法或者StrUtil.textarea2Html()等方法。
    • 前台jsp中的el表达式,如${user.nickname},改成struts标签形式<s:property value="user.nickname"/>
    • 前台ajax返回数据时进行处理,如$('#nickname').text(data.nickname),改为$('#nickname').text($('<pre/>').text(data.nickname).html())

    如果还有其他情况会继续补充

    The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory异常
    这个异常是servlet执行service方法时报的错,多半是jdk、tomcat和web.xml之间不匹配出现的。tomcat8中servlet-api.jar改了很多,在svn项目检出时,j2ee版本不要定太高,目前意思网的是2.5,tomcat8的标准是3.1,但我不建议到3.1,容易出现servlet的bug
    网友解答:

    Get rid of any servletcontainer-specific libraries such as jsp-api.jar in your /WEB-INF/lib folder. This exception indicates that you've put servletcontainer-specific libraries of a container which supports only Servlet 2.4 / JSP 2.0 or older in there (the getJspApplicationContext() method was introduced in Servlet 2.5 / JSP 2.1). This is a major mistake. Those libraries don't belong in the webapp's classpath.

    Perhaps you did this to overcome project compilation errors, which is indeed a pretty common beginner's mistake. This should have been solved differently, you should refer the target runtime in your project, not copy some libraries of an arbitraty servletcontainer make/version into your project. It would make your project incompatible with servletcontainers of a different make and/or version.
    相关链接1
    /相关链接2

    关于html中的target属性与点击事件
    如果用到target="_blank" 点击时会新开页,并且每次点击展开不同页面。
    如果用到target="xxxx" 点击时会新开页,但是每次点击都是刷新同一页面
    在新开的页中,能够取到父页面的元素,如下:

    window.opener.$.find('#bgColor')
    

    真正点击触发的事件中,回调函数写window.open是不会被屏蔽的

    ServletContext取资源路径
    旧版本当前使用的方法是

    String path = ServletContext.getRealPath("WEB-INF/config");
    

    但是网友们说,这不好,这是坑,而且tomcat8下不好使,改进代码如下:

    URL url = this.context.getResource("/WEB-INF/config");
    path = url.getPath();
    

    CSDN博文地址

    关于ActiveXObject
    window.ActiveXObject 这个元素在ie8-10都是存在的,ie11就没了

    js比较数字大小
    比较大小之前一定要看看变量的类型,如果是String型,就得这样写

    parseInt(arg0) < parseInt(arg1)
    

    否则会出现500>1000的情况(字符串比较大小按单个字符比较)

    Hibernate merge和save区别
    merge对对象操作之后,持久化会断开,如果期望执行的是save操作,保存之后的自增主键是获得不到的

    eclipse启动时Workspace in use or cannot be created, choose a different one
    把workspace.metadata目录下的.lock文件删除掉

    IE8下的js原生trim报错
    使用jquery的$.trim()

    jQuery给DOM追加元素时,可以简化

    $('body').append($('<li/>');
    

    标签按钮切换抖动问题
    选中状态下加了classthis,this的样式加了1px的border,如果line-heighthight一样的话,会有抖动问题,修改为line-height = height - 2*border

    杜绝连点问题

    1. 表单提交,如果是struts下可以加<s:token/>
    <s:form action="page1" theme="simple">    
    <s:datetimepicker name="order.date" label="购买日期" toggleType="explode" value="today"/><br/>    
    <s:token/>    
    <s:reset/><s:submit/>    
       </s:form>
    

    另外要配置拦截器,详情请戳我

    1. ajax提交可以这样做:
    $('#submit').on('click', function() {
        // 校验表单
        if( validateForm() ) return;
        // 接触绑定的点击事件
        $('#submit').off('click');
        // 提交表单
        // TODO
    })
    

    off()函数可以解除指定元素上的指定事件
    jquery 文档 :

    unbind方法跟这样的作用类似
    jquery 文档 :

    意思网

    相关文章

      网友评论

        本文标题:开发小记

        本文链接:https://www.haomeiwen.com/subject/faaptttx.html