工欲善其事,必先利其器

子曰:“工欲善其事,必先利其器。居是邦也,事其大夫之贤者,友其士之仁者

孔子
这句话是我近两年的座右铭,引用百科的解释:“工匠想要使(他的)工作做好,一定要先使工具锋利。比喻要做好一件事,准备工作非常重要。”;解释的很清楚,这就和做事要有计划是一个道理。
还有一个我欣赏的话:

无欲速,无见小利。欲速,则不达;见小利,则大事不成。

引用百科的解释:“欲:想要;速:快速;达:达到(目的)。过于急性反而不能达到目的。”

这些真理就如同孙子兵法一样适用,咱们也可以拿到今天来分析一下现在的情况;顺便说一下我写这篇文章的目的,因为开博客同时也建立了2个有关RIA开发的群所以有很多网友找我问问题,询问问题的可以分为两类:

第一类:新手

阅读更多…

Popularity: 1%

最新消息:本站的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%

为jstree添加双击事件切换[展开/收缩]功能

一、概述

jstree是一个基于jQuery开发的优秀树插件,能够快速生成美观实用的树;目前项目中使用了这个插件遇到了一点问题,以前使用simpletree的时候可以双击父节点[展开/收缩]子节点,但是好像jstree没有提供这个功能,所以只有自己开发了。

使用的版本号:jsTree 1.0-rc1
没有添加双击功能时:http://www.wsria.cn/demo/jstree/jstreeNormal.html

二、分析源码

阅读更多…

Popularity: 20%

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%

注意FireFox3.6.4版本中的独立插件进程

前几天升级了Firefox3.6.4版本,之后一直感觉机器慢,CPU占用高,然后查看进程发现有一个plugin-container.exe在运行,占用CPU20%,而且内存占用也比较高,把手放在风扇处立马回来了……烫死了,贴图为证:

然后设置把进程结束就出现了已经打开的Flash崩溃的提示,不用管,刷新就好了,关闭进程后温度检测:

网上查了资料说这个是3.6.4版本中新加的一个独立进程,负责独立运行插件,当插件崩溃时Firefox不受影响,但是目前只支持:Adobe Flash, Apple Quicktime or Microsoft Silverlight plugin这三种插件,而且如果开启运行Flash时CPU占用很高内存也会理路攀升,导致我把CPU风扇的声音当音乐听

解决办法

幸运的是Firefox提供了关闭的办法,还是在about:config里设置,搜索:dom.ipc.plugins.enabled选项,然后设置所有以dom.ipc.plugins.enabled开头的选项为false

Popularity: 22%

[转][推荐]15 个 JavaScript Web UI 库

从cnbeta.com看到的,分享给大家;原文:http://www.cnbeta.com/articles/111512.htm

几乎所有的富 Web 应用都基于一个或多个 Web UI 库或框架,这些 UI 库与框架极大地简化了开发进程,并带来一致,可靠,以及高度交互性的用户界面。本文介绍了 15 个非常强大的 JavaScript Web UI 库,非常适合各种各种规模的富 Web 应用的开发。 LivePipe
LivePipe UI 基于 Prototype Javascript 框架,包含了一整套 经严格测试并高度可扩展的 UI 控件,拥有很好的文档,在不支持 JavaScript 的环境中,可以无缝降级使用。包括 Tab, 窗体,文本框,多选框,评分控件,进度条,滚动条,右键菜单等多种控件。

LivePipe 首页与下载
LivePipe 演示与示例


UKI

UKI 是一套简单的 JavaScript UI 工具集,用于快速创建桌面风格的 Web 应用。包含的控件从滑动条,到分栏视图,不一而足。熟悉 jQuery 的开发者会发现这个工具很容易上手,非常简洁,无需安装框架,不依赖 CSS 引用。

UKI 主页与下载
UKI 控件,演示,示例


MochaUI

MochaUIMooTools Javascript 框架 与 ExplorerCanvas 的一个备受欢迎的扩展,可以用来快速创建 Web 应用,Web 桌面,网站,饰件,独立 Windows,Modal 对话框等等。

MochaUI 主页与下载
MochaUI 控件,演示,示例

中文编译来源:锐商企 业CMS 网站内容管理系统 官方网站
Sigma Ajax UI Builder
SigmaVisual 是一套基于 Web 的,所见即所得的 AJAX UI 创建工具,包含超过40个不见,如 Tab,对话框,树形图,时间线等,基于 JavaScript 和 PHP。

Sigma Ajax UI Builder 主页和下载
Sigma Ajax UI Builder 控件,演示和示例


JxLib based MooTools

JxLib 是一个基于 MooTools 的 JavaScript UI 框架,包含多数 Web 程序都需要的基本空间,如按钮,Tab,菜单,树形结构,对话框等等。JxLib 还支持换肤功能。

JxLib 主页与下载
JxLib 控件,演示与示例


Dijit – The Dojo Toolkit

Dijit 基于 Dojo,也是学习 Dojo 扩展的一个好起点。可以用来创建非常漂亮的 Web 2.0 GUI。支持多语种,甚至支持不同语种的文字书写方向以及本地化数字,日期等等。

Dijit 主页,下载
Dijit 控件,演示,示例


jQuery TOOLS

jQuery Tools 是一个非常轻量(2.5kb)的常用 UI 库,支持以下 jQuery 对象,Tabs, 工具提示,滚动条,层,表单以及 Flash 嵌套。

jQuery TOOLS 主页与下载
jQuery TOOLS 控件,演示,示例


jQuery UI

jQuery UI 基于 jQuery,包含 3 个大类,饰件,一些内置的 UI 对象;效果,对各种网页对象施加动画效果(如爆炸效果);鼠标交互,如拖放操作。

jQuery UI 首页与下载
jQuery UI 控件,演示与示例


Prototype UI

Prototype UI 基于 PrototypeScript.aculo.us,包括多个模块(旋转木马,Modal 窗口,阴影,右键菜单等),每个模块可以单独安装使用。

Prototype UI 主页与下载
Prototype UI 控件,演示与示例


Jitsu

Jitsu 功能包括 XML 标记,页面编译,动画引擎,Ajax 以及运行时检测等等,它的 Ajax 功能使消费级 Web 应用的创建变得非常简单,支持客户端数据绑定,还可以将页面编译成 JavaScript,Jitsu 在 Firefox 和 IE 中运行最佳。

Jitsu 主页与下载
Jitsu 控件,演示与示例


Qutensil
Qutensil 仍在开发中,但其路线图已经显示出某些引人注目的东西,基于 PrototypeScriptaculous ,包含消息,调色板,滑动条,工具提示,可拖放窗口以及警告,确认,提示等窗口。

Qutensil 主页,下载
Qutensil 控件,演示,示例


Script.aculo.us
script.aculo.us 是一个备受欢迎的 UI 工具集,基于 Prototype 框架, 提供了诸如视觉效果,UI 控件以及面向 DOM 的工具。

Script.aculo.us 首页与下载


Alloy UI
AlloyUI 是一套功能丰富的 UI 框架,基于 YUI 3,部分基于 YUI 2,包含一套丰富的(超过60)UI 部件,如图片库,对话框,树形结构,面板,自动完成,按钮,日历控件,工具条等。

Alloy UI 首页和下载
Alloy UI 控件,演示与示例


iUI: iPhone UI 框架

IUI 包含一套 JavaScript 库,CSS 式样表及图片,是一个轻量级 iPhone UI 库,包含 iPhone 风格导航菜单,设备方向,iPhone 风格切换等功能,可以为你的 Web 程序带来 iPhone 般的体验。

iUI 主页与下载
XUI

XUI 是一个用于移动 Web 应用的轻量,极简,高度模块化的框架。它之所以非常轻量的原因是,它只支持移动浏览器,所有跨浏览器支持的代码都被剥离。它面向一线移动 Web 浏览器,如 Webkit,Fennec 以及 Opera,并有意将来对移动 IE 和黑莓提供支持。

XUI 首页,下载
Yahoo! YUI Library

Yahoo! YUI Library 可谓所有 Web UI 之父,可靠,功能丰富,目前已经发展到第 3 版。它拥有一个很庞大的开发团队,推出了非常丰富的功能,就功能而言,无可匹敌。

YUI Library 主页与下载
YUI2 入门
YUI3 入门
YUI3 控件,演示与示例

Popularity: 16%

解决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%

[转][推荐]jqGrid基础学习系列文章

最近项目中使用了jqGrid数据网格插件,看到了网友写的一系列文章分享给大家看

Popularity: 28%