分类 "解决方案" 的存档.

最新消息:本站的WIKI开通了 wiki.wsria.cn

这年头做开发用到的技术太多了,尤其是做Java开发的技术很多很零散,而且Java不想微软那样有很全面的文档可以查询,这就是开源的弊端,只能去社区或者群里面找高手问;如果是文档全的开源插件还好,如果文档不全只能Google了……所以自己整理一些技术文档还是很有必要的;

另外国内大多数公司需要的员工都是综合人才,除了编码和数据库外还要可以做系统设计、需求分析等方面的工作,可想而知这些工作包含了多少技术方向……如果遇到问题我不说大家也清楚是怎么办的……要么记住了解决办法要么Google……如果解决办法需要些一段代码怎么办

所以“我们需要自己的WIKI”,把自己遇到的问题解决办法或者经验记录下来方便日后查询更可以以后整理出自己的技术手册,为此我建立了自己的
WIKI站点http://wiki.wsria.cn
我使用的是Dokuwiki,具体安装过程看官方文档吧,不在本文的范围内。

我也乐意和大家分享我的WIKI,你可以通过RSS订阅的方式:

RSS订阅:http://wiki.wsria.cn/feed.php
可以显示最近更新的内容

Popularity: 3%

JasperReports iReport导出PDF中文解决办法

最近研究JasperReports的UI可视化设计工具iReport在导出PDF文档时遇到了老问题:中文乱码……哎,又是乱码,解决呗

办法很简单:

一、设置文字标签的属性

点击文字标签设置PDF的属性,如下

Pdf font  name: STSong-Light;

Pdf  embedded:勾上(其实不打钩也可以)

pdf enccoding: UniGB-UCS2-H (Chinese Simplified)

设置完成后再点击预览查看控制台是否有报错,因为设置了中文语言所以如果iReport的lib目录下面没有中文语言包iTextAsian.jar的时候会报错,如下图:

阅读更多…

Popularity: 17%

解决a different object with the same identifier value was already associated with the session错误

使用Hibernate三年了第一次遇到这个异常,常发生在一对多和多对多关系映射时,其实翻译一下很简单就是在Session中有两个相同标示但是又不是相同的实体,当进行保存或者更新(saveOrUpdate)时就爆出了这个错误,因为Hibernate不知道改怎么操作了,Google了一下发现解决办法很多,比如清空Session对象的缓存、刷新Session,但是这些都会导致后遗症的发生

一、清空Session缓存
也就是执行session.clean()方法,但是如果在clean之后再对对象saveOrUpdate就会报错:“Found two representations of same collection”,所以这个解决办法不可取

二、刷新Session

session.refresh(object)方 法就可以解决了,注意,当object不是数据库中已有数据的对象的时候,不能使用session.refresh(object)因为refresh是 从hibernate的session中去 重新取object,如果session中 没有这个对象,则会报错所以当你使用saveOrUpdate(object)之前还需要判断一下

三、最好的解决办法:session.merge()

这个是我认为比较好的解决办法了,session里面有一个相同标示的对象,业务方法里也有一个相同标示的对象,把两个合并起来不就可以了,最后调用session.merge()更新到数据库,OK

四、Hibernate 疑难异常及处理

1、a different object with the same identifier value was already associated with the session。

错误原因:在hibernate中同一个session里 面有了两个相同标识但是是不同实体。

解决方法一:session.clean()

PS:如果在clean操作后面又进行了saveOrUpdate(object)等改变数据状态的操作,有可能会报出”Found two representations of same collection”异常。

解决方法二:session.refresh(object)

PS:当object不是数据库中已有数据的对象的时 候,不能使用session.refresh(object)因为该方法是从hibernate的session中去重新取object,如果session中没有这个对象,则 会报错所以当你使用saveOrUpdate(object)之前还需要判断一下。

解决方法三:session.merge(object)

PS:Hibernate里面自带的方法,推荐使用。

2、Found two representations of same collection

错误原因:见1。

解决方法:session.merge(object)

Popularity: 14%

jqGrid查询中文乱码问题解决办法

jqGrid是我用过最好的基于jQuery的列表插件,在项目中试用后效果很不错,基于jQuery UI的界面美观并且可以更好皮肤……

花了一天时间实现了增删改和查询功能,但是在查询中文的时候遇到了乱码问题……诡异,说一下情况:

  • 我的开发环境是全站UTF-8,而且有编码Filter;
  • jqGrid版本为:3.6.4

在后台断点调试发现如下特点:

1、新增、编辑没有乱码问题

2、查询中文后台时得到的参数是乱码

然后就考虑了,如果是开发环境问题那肯定全部都有乱码问题,所以问题应该在jqGrid的查询函数里面,最后通过Firebug找到了:

c.find(".ui-search").click(function() {

这一行是查询功能的开始也就是点击“查询”的触发函数

所以根据以往的经验在这里把参数值编码一次就可以了,也就是encodeURIComponent函数具体修改如下:

  1. 找到第6202行
  2. 找到代码
    6201
    6202
    6203
    
    var p = jQuery(this).find("select[name='field'] :selected").val(),
    g = jQuery(this).find("select[name='op'] :selected").val(),
    f = jQuery(this).find("input.vdata,select.vdata :selected").val();
    
  3. 现在看到这里的3行代码就是查询时获取参数的3个变量,我们要修改的就是这里,最终代码:
    6202
    6203
    6204
    
    var p = encodeURIComponent(jQuery(this).find("select[name='field'] :selected").val()),
    g = encodeURIComponent(jQuery(this).find("select[name='op'] :selected").val()),
    f = encodeURIComponent(jQuery(this).find("input.vdata,select.vdata :selected").val());
    

到此大功告成

——————————–分割线———————————–

为了方便网友顺便提供本人修改后的jqGrid3.6.4版本的源码,分为3中类型(未压缩、迷你版、压缩版pack)

下载:jquery.jqGrid.3.6.4.js 共 119 次

下载:jquery.jqGrid.min.3.6.4.js 共 100 次

下载:jquery.jqGrid.pack.3.6.4.js 共 76 次

Popularity: 25%

Maven下用mvn assembly:assembly打包class文件重复

最近学习Maven遇到一个问题,使用mvn assembly:assembly打包项目里面有重复的class文件,如图:


后来Google了一下也没有找到解决办法,在Maven群里面有人说版本问题,然后就指定了maven-assembly-plugin插件的版本号,虽然是Beta版的,解决问题就可以了,配置如下:

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>2.2-beta-5</version>
  <configuration>
    <descriptorRefs>
      <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
  </configuration>
</plugin>

Popularity: 20%

Win7下不能安装Oracle11g解决办法

昨晚下载了Oracle11,今天在WIN7下安装遇到了问题,说操作系统部支持,具体日志信息:

正在检查操作系统要求…
要求的结果: 5.0,5.1,5.2,6.0 之一
实际结果: 6.1
检查完成。此次检查的总体结果为: 失败 <<<<
问题: Oracle Database 11g 未在当前操作系统中经过认证。
建议案: 确保在正确的平台上安装软件。
========================================================

正在检查 Service Pack 要求…
检查完成。此次检查的总体结果为: 未执行 <<<<
OUI-18001: 不支持操作系统 ‘Windows Vista 版本 6.1′。
建议案: 请安装建议的 Service Pack。
========================================================

解决办法其实很简单,只要在XML文件中添加WIN7就可以了,因为Vista是6.0版本,WIN7实在Vista内核的基础上升级的,所以解决起来还是比较容易的,如下:
阅读更多…

Popularity: 27%

分享:Java日期工具类

平常开发中积累了一些,可能会和其他有重复,发上来按需取舍
包括:日期格式化、日期相加、日期排序等
因为在项目中要对一组无序日期排序并分组就写了一个方法,

/**
 * 日期分组<br />
 * 能够对指定日期列表按照连续性分组<br />
 * 例如:[2010-01-15, 2010-01-16, 2010-01-17, 2010-01-20, 2010-01-21, 2010-01-25]<br />
 * 分组结果为:<br />
 * <ul>
 * <li>[2010-01-15, 2010-01-16, 2010-01-17]</li>
 * <li>[2010-01-20, 2010-01-21]</li>
 * <li>[2010-01-25]</li>
 * </ul>
 * @param dates 日期对象
 * @return      连续性分组结果
 */
public static List<list <Date>> groupDates(List<date> dates) {}
</date></list>

感觉以后会用到所以放上来共享
阅读更多…

Popularity: 13%

备忘:金格、用友CELL不能在IE8下使用的解决办法

说明一下,公司的项目图文混排都是使用的金格WebOffice,报表是用友的CELL;

最近重装系统后把IE升级到IE8版本,然后发现装不上金格和用友CELL插件,本来想还原成IE7的,后来google了一下发现了解决办法.

具体的步骤:

以管理员身份运行ie8,然后选择?工具-Internet选项-高级-安全,接着找到启用内存保护帮助减少联机攻击,把前面的勾勾去掉,再选择确定,然后重新打开ie8进入页面就可以用了。

Popularity: 4%

IE中丢失session问题解决办法

前段时间在一个项目中为了避免用户的误操作所以点击一个按钮后使用了模态对话框来打开一个新的页面,顺便说一下后台语言为JAVA;昨天在测试的时候出现了问题,具体表现如下:

IE中打开模态对话框<window.showModalDialog()>然后在模态对话框中再打开一个标准窗口<window.open()>,在打开的新窗口中获取session信息得到的为null,很怪的事情是在有些IE6下面可以有的不可以,版本号我也对比过一样,把Internet选项页都重置了,但是在IE7下面都没有问题,然后我就想是不是没有打补丁,google了一下也没有发现什么补丁之类的;

最后询问了一下架构师阿强他看到后好像很激动的说我知道,在dialog中打开新窗口会丢失session的,豁然明白了,令人痛恨的IE6……

最后换成了window.open()没有问题了

希望有同此遭遇的网友能避免这个BUG

Popularity: 9%