开发小记
禁止页面滚动
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执行顺序
- from子句组装来自不同数据源的数据;
- where子句基于指定的条件对记录行进行筛选;
- group by子句将数据划分为多个分组;
- 使用聚集函数进行计算;
- 使用having子句筛选分组;
- 计算所有的表达式;
- 使用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_id
和userId
这两种形式都好使(前提是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();
关于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-height
跟hight
一样的话,会有抖动问题,修改为line-height = height - 2*border
杜绝连点问题
- 表单提交,如果是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>
另外要配置拦截器,详情请戳我
- ajax提交可以这样做:
$('#submit').on('click', function() {
// 校验表单
if( validateForm() ) return;
// 接触绑定的点击事件
$('#submit').off('click');
// 提交表单
// TODO
})
off()
函数可以解除指定元素上的指定事件
jquery 文档 :英 中
unbind
方法跟这样的作用类似
jquery 文档 :英 中
意思网
网友评论