2011.11-项目问题汇总

error:hibernate保存一对多set集合出现异常->Caused by: java.sql.BatchUpdateException: Duplicate entry '52-135' for key 'PRIMARY'
解决:为AppSortType增加 hashCode() & equals(Object obj)方法。

原因:Set集合内容纳元素不重复,Set集合在add一个元素时候先判断是否已有改元素,其中调用equals方法来执行相等判断。故实体bean要覆写hashCode()和equals(Object)方法来保证实体的相等判断结果的正确。

 


error: 使用json result type返回数据,在ie6下为文件下载操作。
解决:更改配置result type的参数为contentType->text/json

原因:webwork默认json result 的contentType为application/json,ie6不能识别为json数据,故当做文件流来下载。必须要指定为text/json,告知ie6为文本文件。

 

error: 使用json result type返回数据,在ie6下乱码。
解决:更改配置result type的参数为contentType->text/json;charset=GBK

原因:ie6下按默认编码解析文本,所以要指定编码为GBK与数据一致。

 

problem:使用Gson无法对实体进行json字符转换。
解决:使实体变为脱管状态,使用session.evict(entity).

原因:Gson对bean进行解析的时候用到了反射机制,而hibernate的托管实体有字节码增强,污染了原先实体bean的字节元数据,导致gson.parse(bean)结果为空对象{}。session.evict方法则可以将一个托管bean转换成游离的bean,还原成原始包含数据的实体对象,故可以给gson.parse(bean)正常解析。

 

 

problem:ie6下本地测试$.getJSON方式获取json,提示No Transport

解决:在ready Function外设置$.support,cors = true;在$.ajaxSteup({crossDamian:true});更改为跨域访问。

原因:ie对本地访问也认为是跨域访问,故getJSON需采用动态创建元素<script src="获取js的地址" ></script>来获取返回的json,称为jsonp。

 

 

problem:ie6下本地测试$.getJSON方式获取json,导致为拦截器拦截为没有登录,会话信息丢失。

解决:跨域访问不带cookie,而上sessionid表现在cookie中的jsessionid:XXXXXXXXXXXXXXXX,故在请求的json的地址后加上XXX.jspx;jsessionid=XXXXXXXXXXXXXX来实现url重写cookie,保持会话跟踪信息

原因:万恶的ie6,为什么就把localhost对localhost发起的ajax请求解析成跨域请求呢,不解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值