近期遇到的小问题

2012-12-25

一、com.googlecode.jsonplugin.JSONException: java.lang.reflect.InvocationTargetException异常
出现这个异常,常见的错误就是两种:
1、@JSON(serialize = false)注解没有加在不需要序列化的属性上,可能导致该异常;
2、查询的List集合中对象有可能使用hibernate级联到了其他对象,由于fetchType默认为LAZY,延迟加载而导致了这个问题。

二 、Can not find a java.io.InputStream with the name [inputStream] in the invocation stack.
这个问题一般都出现在struts2下载中,错误的原因就是InputStream为null。但这并不是根本原因,这个报错并不准确。因为一般会在getInputStream中写处理的逻辑,任何可能的错误都将导致InputStream为null,所以需要保证getInputStream中所有代码的正确。(可以将getInputStream中代码放入action调用的方法来锁定错误)

三、 pager-taglib传递中文参数的乱码问题
pager-taglib在传递中文参数时,默认使用java.net.URLEncoder.encode()方法对中文进行编码(使用平台默认编码)并使用get方式,但在Tomcat服务器端则默认使用ISO8859-1,get方式传递参数将出现乱码,最简单的方式就是在action中转码param = new String(param .getBytes("ISO8859-1"), "gbk"),即可。(分页时候需要注意首次查询使用post不应转码,使用pager.offset参数可判断是否是分页中的首次查询)

四、向session中存放数据的问题
当session.setAttribute()时,如果存放的是基本类型,则该属性不会改变,如果存放的是引用数据类型,修改该引用的数据,代表着修改session中的属性,所以session属性的值也会跟着变化。

2013-03-12

五、No result defined for action xxxAction and result input
一般是由于页面传递参数的格式问题,比如时间要求是yyyy-MM-dd,实际传递则是yyyy-MM等都会引发这个错误,这个错误不是很好确定位置,只能是通过页面参数传递的修改一点一点查询。

六、关于IE8的一个问题
在IE8中,使用jQuery选择器选择元素时,IE8中会将</input>也认为是一个元素,并不把这个作为结束标签,但IE9以上已修复这个问题。(如果是<td><input name="param1"></input><input name="param2"></input></td>,使用$('#td :eq(1)')将选中name="param1"的结束标签</input>,并不是选中name="param2"的input)

2013-03-28

七、关于jQuery选择器
使用jQuery选择器:checked时,如果同时还有select的话,选中的元素数组将包含这个select,比如:
     <form>
         <input type="check" checked="checked"/>
         <input type="check"/>
         <select><option selected="selected"></option></select>
     </form>
此时,使用$("form :checked")时(form下所有选中元素),select的option也将算在内,但使用:selected则对复选框没影响。

你可能感兴趣的:(问题)