Tin's Blog

You are coming a long way, baby~Thinking, feeling, memory...

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  128 随笔 :: 0 文章 :: 221 评论 :: 0 Trackbacks

#

     摘要: 这是擦拭法的本意。
实际上BadClass()实例化以后Class里面就不包括T的信息了,对于Class而言T已经被擦拭为Object。而真正的T参数被转到使用T的方法(或者变量声明或者其它使用T的地方)里面(如果没有那就没有存根,这里指ParameterizedTyp),所以无法反射到T的具体类别,也就无法得到T.class。
而getGenericSuperclass()是Generic继承的特例,对于这种情况子类会保存父类的Generic参数类型,返回一个ParameterizedType,这时可以获取到父类的T.class了,这也正是子类确定应该继承什么T的方法。
我们应该利用这种特性,这对实现模版方法非常有用。  阅读全文
posted @ 2006-05-08 21:37 Tin 阅读(2558) | 评论 (3)编辑 收藏

     摘要: 这两天太忙了,没时间写Blog,业余时间又扒了一次google的拖拽,对比了netvibes的,差不多,让后就写了个注释,顺便学习。
google用了混淆,js里面的命名比较晕。我花了些时间把他们翻译成容易看懂的命名,并且作了注释,希望对大家有帮助。
可以这里下载我的例子:
http://www.blogjava.net/Files/iamtin/google_drag.rar
//可拖拽Element的原形,用来将event绑定到各个钩子,这部分市比较通用的,netvibes也是基本完全相同的实现
//这部分推荐看dindin的这个,也会帮助理解,http://www.jroller.com/page/dindin/?anchor=pro_javascript_12
var Drag = {
//对这个element的引用,一次只能拖拽一个Element
obj:null,
//element是被拖拽的对象的引用,elementHeader就是鼠标可以拖拽  阅读全文
posted @ 2006-04-27 22:40 Tin 阅读(15236) | 评论 (34)编辑 收藏

     摘要: 为我们的项目写的一个轻量的分页API。目的在于将分页与数据查询的逻辑完全剥离。我以前看过robbin发的通过detachedCriteria实现的分页那片贴子,里面把分页和数据查询结合在一起了。而我觉得分开更轻量,而且替换也比较容易。但是这个实现中有一个反模式,在逻辑中生成了代码,无奈之选,为了简便。其中字符生成可以自己扩展i18n实现,应该非常容易。
分页实现的接口:  阅读全文
posted @ 2006-03-31 12:30 Tin 阅读(3477) | 评论 (6)编辑 收藏

     摘要: 使用jakarta commons-upload。
升级到2.2.2后发现上传中文会乱码。
经过跟踪发现在com.opensymphony.webwork.dispatcher.DispatcherUtils的prepare(HttpServletRequest request, HttpServletResponse response)方法。
2.2.1->2.2.2时这个方法发生了非常的的变化。
2.2.1时:
public void prepare(HttpServletRequest request, HttpServletResponse response) {
if (encoding != null) {
try {
request.setCharacterEncoding(encoding);
} catch (Exception e) {
LO  阅读全文
posted @ 2006-03-30 21:40 Tin 阅读(3955) | 评论 (11)编辑 收藏

     摘要: 这是一篇很有趣的文档,所以摘要一下,其实类似阅读笔记,好像是3/25发布的:
这时基于对以下人的采访:
JSF Jacob Hookom
RIFE Geert Bevin
Seam Gavin King
Spring MVC Rob Harrop
Spring Web Flow Rob Harrop and Keith Donald
Stripes Tim Fennell
Struts Action 1 Don Brown
Tapestry Howard Lewis Ship
Trails Chris Nelson
WebWork Patrick Lightbody
Wicket Eelco Hillenius
里面问了每个框架的人6个相同的问题,很好的体现了各个Web框架的不同之处。如果配合Rod Johnson的J2EE Development Without EJB等书中对Web MVC的阐述会更加深刻的理解各种框架的思想和使用场合。我阅读后很有收获,所以将全文摘  阅读全文
posted @ 2006-03-30 16:28 Tin 阅读(3195) | 评论 (0)编辑 收藏

     摘要: 今天浏览WW的Wiki,结果无意发现ww:date标签的用法,挠头一想以前没有见过呀,仔细一看原来是2006/3/21才加上的。
会头看看项目发现用的ww 2.2.1中没有这个标签,心想是不是发布新版本了?
果不出所料!发现OPENSYMPHONY已经发布2.2.2了。
不过2.2.2是在Opensymphony下的最后一个版本了,以后的版本就会以Struts Action 2.0的形式发布了,而后者今年8月才发布,中间的日子估计只能靠nightly build了。
说说变化,发现增加了RichTextEditor,经考察就是我们熟悉的FCK Editor。发现还增加了nifty corners,这是一个不用images的圆角容器(css+js),估计用在了某个theme里面。还有J2SE5的支持也更加完善,现在已经可以支持泛型Collection的反射(无需-conversion文件了),还支持annotation风格的validation声名(如此像Stripes那样的Web框架就没什么可吹嘘的了)。其它的变化请参考他们的ReleaseNotes。   阅读全文
posted @ 2006-03-28 20:00 Tin 阅读(2559) | 评论 (3)编辑 收藏

     摘要: BJUG的Cleverpig说起Stripes,正好前两天在TSS上看到Simon Brown的Blog,对它有点感性认识,所以今天就看了一下,说些粗陋的感受:
皮毛上的观感:
1、使用Annotation配置。将Action影射、返回View、默认Command注册、是否验证这些东西都通过Annotations搞,挺有意思。
2、它也包装了自己的Tag,Tag从感官上感觉很像WebWork的风格(估计Stripes也是过这个来实现bind,和Spring MVC相同吧,不过没仔细看Stripes的bind方式)。但是它好像很方便与JSTL共用,所以我觉得它可能和Spring MVC类似,把变量拷贝到request里面,而不是WebWork那样的VlueStack。
3、它的Validation很Cool,用Annotation设定Validation相当舒适。
4、它里面的event似乎挺有意思,也就是说一个Action可以对应多个method,它管它叫Event。现在WebWokr和Spring MVC对这都有支持,但是Annotation带  阅读全文
posted @ 2006-03-22 21:36 Tin 阅读(1440) | 评论 (0)编辑 收藏

     摘要: 遇到了一个奇怪的“浏览器兼容问题”……
是这样的,登陆页面工作不正常,在firefox下总是没有登陆,根本就没有触发webwork的filter dispatcher。
打开我的三剑客:IE、Firefox、Opera测试,发现只有Firefox不行(Mozzila内核的都不行)。
然后花了3个多小时找原因,翻遍网络:weblogic、webwork、fireforx所有关键词都搜索了,没有收获。
然后开始sniffer,看报文。
经过多次分析,发现firefox根本就没有post那个form!
然后又是继续的分析还是无果,一筹莫展……  阅读全文
posted @ 2006-03-14 21:12 Tin 阅读(529) | 评论 (2)编辑 收藏

     摘要: Webwork是标准的请求风格Web MVC,类似的有Struts、Spring MVC。这这种风格的MVC中都使用了前端控制器模式(企业架构模式),也就是说一个URL会被解析然后派发到对应的Action解析,而View调用的是Action处理后的Form对象或者Command对象(Rod的Without EJB)。
上面引用了一些经典的言论,而它们和“页面控制器风格Action复用”有什么关系呢?
嘿嘿,页面控制器在这里指到了View的Page里面依然可以调用控制器(在Webwork中就是Action)。如果是以前肯定有人会说,如果用JSP我随时可以在Page里面写scriptlet,什么东西都能调用……
可是,现在不一样了。我们希望让View单纯一点,不要有杂乱无章的逻辑参与其中。
可是,如果要是如上面所说那么Action在它的一个请求生命周期就要做所有的事……这样一是使Action逻辑变得复杂,二是会变得难以复用。
所以,说到这里就引出了这个主题:
1、在页面调用控制器
2、复用控制器逻辑  阅读全文
posted @ 2006-03-10 14:45 Tin 阅读(2581) | 评论 (4)编辑 收藏

     摘要: 根据生日计算年龄可以通过Calendar实现。最简单可以考虑get(Calendar.DAY_OF_YEAR)来简单修正年龄,但是遇到生日在闰年的2月29之后,或者今年是闰年的2月29之后可能出现计算不准,误差一天。所以还是老实判断年月日好了。
public static int getAge(Date birthDay) throws Exception {
Calendar cal = Calendar.getInstance();

if (cal.before(birthDay)) {
throw new IllegalArgumentException(
"The birthDay is before Now.It's unbelievable!");
}

int yearNow = cal.get(Calendar.YEAR);
int monthNow =   阅读全文
posted @ 2006-03-10 10:00 Tin 阅读(2606) | 评论 (0)编辑 收藏

仅列出标题
共6页: 上一页 1 2 3 4 5 6 下一页