|
遇到一个需求,需要根据当前页面的状态动态设置定义在input上的my97日期控件的onfocus事件是否启用。几经周折,才搞定。 对于已经写在input上的onfocus事件: <input type="text" name="finishtime" id="finishtime" readonly="readonly" onfocus=WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM-dd HH:mm'}) class="Wdate"> 我用jquery的unbind函数死活都解决不了。 最后只能用IE的detachEvent来解决,而用这个detachEvent又有两个要注意的: (1)detachEvent的事件必须是先前attachEvent的。 (2)函数不能带参数,故用了个自定义的无参的my97dp函数来中转。 真是搞不懂,又不能专门花时间来把js事件机制搞得很清楚。 代码如下: <script> function my97dp(){ WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM-dd HH:mm'}); } jQuery(function(){ jQuery('#finishtime').get(0).attachEvent('onfocus',my97dp); var status='${obj.status}'; if(status=='2'||status=='3'){ var t=jQuery('#finishtime').addClass('readonly') .attr('readonly',true).removeClass('Wdate').get(0); t.detachEvent('onfocus',my97dp); } }); </script> <input type="text" name="finishtime" id="finishtime" readonly="readonly" class="Wdate">
又叫软件形态管理。它通过控制、记录、追踪对软件的修改和每个修改生成的软件组成部件来实现对软件产品的管理功能。主要包括版本控制、变更控制、过程支持。这方面最出名的工具是clearcase
1,Ideogramic UML 可用白板涂鸦的方式画UML,还不错。可惜不支持中文。收费。 试用key:2oBPw-TrCRG-9FWGz-TC7Rx-Zq
2, staruml http://www.blogjava.net/daozhanga/archive/2009/03/28/262532.html
问题: 假定,Parent类有一个Set属性,里面放的是Son。如果查询"from Parent",某个Parent哪怕一个Son都没有,那个Set属性不会为null,而是一个空集合。 这时候如果你Parent newP=new Parent();然后BeanUtils.copyPropertis(newP,origP);最后就会报hibernate异常"Found shared references to a collection"。 注:hibernate在什么时机发现"两个对象共享一个集合"的情况的?我这边的例子是在下一次查询时发现的。
原因: BeanUtils.copyPropertis是浅拷贝,导致这两个对象引用的Set是同一个Set,这在hibernate中是不允许的,参见Hibernate reference第6章的"Two entities may not share a reference to the same collection
instance"。 这种问题常见于复制对象时。 如何解决:newP.setSonSet(null); 还有人说原因可能是并发操作:http://www.blogjava.net/fastzch/archive/2006/12/22/89520.html
参考: http://markmail.org/message/fszouomkeicjynw2 http://blog.csdn.net/programeyonger/archive/2008/01/31/2075304.aspx http://www.javaeye.com/topic/99505
1, BeanUtils.copyProperties(dest, orig);
这种copy是浅拷贝,复制后的2个Bean的同一个属性可能拥有同一个对象的ref,这个在使用时要小心,特别是对于属性为自定义类的情况.还要属性为集合类的情况。小心hibernate的Set 2,BeanUtils.copyProperties与PropertyUtils.copyProperties的区别 这两个类几乎有一摸一样的功能,唯一的区别是:BeanUtils在对Bean赋值是会进行类型转化。举例来说也就是在copyProperty时只要属性名相同,就算类型不同,BeanUtils也可以进行copy;而PropertyBean则可能会报错。当然2个Bean之间的同名属性的类型必须是可以转化的,否则用BeanUtils一样会报错。
若实现了org.apache.commons.beanutils.Converter接口则可以自定义类型之间的转化。
除BeanUtils外还有一个名为PropertyUtils的工具类,它也提供copyProperties()方法,作用与BeanUtils的同名方法十分相似,主要的区别在于后者提供类型转换功能,即发现两个JavaBean的同名属性为不同类型时,在支持的数据类型范围内进行转换,而前者不支持这个功能,但是速度会更快一些 http://xiaozhao-521.javaeye.com/blog/244254 注意:有人说BeanUtils支持的转换类型不包括java.util.Date? 我用1.6.1版本试了BeanUtils.copyProperties,肯定是支持java.util.Date的。 3,LazyDynaBean可以实现动态的vo。 这样,有时候程序给view层的东西就可以用它来封装而不用专门建一个多余的vo类了。
参考: http://jone0321.blogdriver.com/jone0321/615543.html http://www.blogjava.net/kenzhh/archive/2008/09/03/226592.html
1,sendRedirect 写法:response.sendRedirect(); 服务器根据逻辑,发送一个状态码,告诉浏览器重新去请求事先访问过的那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取,request.setAttribute的内容没有了 2,include 会同时包含本页面和include页面的内容,地址栏不变。
request.setAttribute的内容可以正常使用
。 servlet写法:request.getRequestDispatcher("jsp2.jsp").include(request, response); jsp写法:<jsp:include page="include.jsp"/> 3,forward 页面会是forward的页面的内容,地址栏不变
request.setAttribute的内容,可以正常使用
servlet写法:request.getRequestDispatcher("jsp2.jsp").forward(request, response); jsp写法<jsp:forward page="include.jsp"/>
以上内容主要来自 图解sendRedirect,include,forward的区别 该文有形象的示意图,值得一看。 4,<%@ include file="/bookshelf.jsp" %>和<jsp:include page="bookshelf.jsp" flush="true" /> 是有区别的。前者主要用于静态内容,后者主要用于动态内容(flush='true'必加?)。 如果要传递参数,只能利用后者的<jsp:param name="" value=""/>标记,不能直接放在url后面。 参考:JSP 最佳实践: 用 jsp:include 控制动态内容
<%@ page language="java" contentType="text/html" %> <html> <body> <jsp:include page="header.jsp" flush="true"> <jsp:param name="pageTitle" value="newInstance.com"/> <jsp:param name="pageSlogan" value=" " /> </jsp:include> <%@ include file="/navigation.jsp" %> <jsp:include page="bookshelf.jsp" flush="true" /> <jsp:include page="/mt-blogs/index.jsp" flush="true" /> <%@ include file="/footer.jsp" %> </body> </html>
1,我觉得UML里最有用的是序列图. 序列图按照时间次序,描述对象之间如何交互,以及交互时的消息。序列图是用例的精细化表达。一个用例可以细化为一个或多个序列图。 用例有粒度之分,序列图也分粗细。 参考资料: (1)用netbeans创建序列图的教程 http://hi.baidu.com/woxxf/blog/item/6ba2f6efed129b12fdfa3c15.html (2)http://hi.baidu.com/haoyan665/blog/item/61717e3f9b21d5ee54e723c6.html (3)http://ieagle.javaeye.com/blog/104956 (4) UML 中各种图形的重要性排行 (5)在线画时序图:http://www.websequencediagrams.com。玩具。
1,乐观锁 <class name="onlyfun.caterpillar.User" table="user" optimistic-lock="version"> <id name="id" column="id"> <generator class="native"/> </id> <version name="version" column="version" access="field"/>
http://caterpillar.onlyfun.net/Gossip/HibernateGossip/OptimisticLocking.html
1,《编程珠玑:第2版》
2, Applying UML and Patterns 3,spring in Action 第二版 4,系统分析师UML实务手册 5, UNIX编程艺术 6,The Productive Programmer 7, 程序设计实践 8,《软件需求最佳实践:SERU过程框架原理与应用》 9,超越对手——软件项目经理的18种实用技能 10,GIS for Web应用开发之道 11,Ruby for Rails中文版 http://book.csdn.net/bookfiles/393/ 12,西游记、设计模式与IBM WebSphere Portal应用开发 13,算法导论,简称CLR 14,大话设计模式 15,Ruby on Rails电子商务实战 16, Effective Java 第二版 17,Business Process Management with JBOSS JBPM: A Practical Guide for Business Analysts 18,OSworkflow: A Guide for Java Developers and Architects to Integrating Open-source Business Process Management 19,The C Programming Language (2nd Edition) 简称K&R http://djkings.javaeye.com/blog/233107 20,编译原理 技术与工具,第二版 编译方面的最牛书,有人称之为龙书 21,计算机程序的构造和解释 ,第二版 简称“SICP”,用Lisp描述 22,计算机程序设计艺术,简称TAOCP 23,《互联网单元测试及实践》 24,单元测试之道Java版——使用Junit 25,JUNIT RECIPES中文版--程序员实用测试技巧 26,junit in ation 27,理解专业程序员 28, 解析极限编程 --拥抱变化(第二版) 29,测试驱动开发 by Example 30,The Algorithm Design Manual 第二版 31, POJOs IN ACTION中文版:用轻量级框架开发企业应用 32, 领域驱动设计--软件核心复杂性应对之道 33,构建可扩展的web站点, 34,Web信息架构:设计大型网站 35, 数据仓库(原书第4版) 36, 电力企业信息化SOAA实践 37, Ajax高级程序设计 38, AJAX企业级开发 39, Ajax实战:实例详解(ajax in practice) 40, Pro Java™ EE Spring Patterns: Best Practices and Design Strategies Implementing Java EE Patterns with the Spring Framework 41,EIP 企业集成模式 42,The Definitive Guide to SOA: Oracle® Service Bus, Second Edition 43,系统分析师技术指南 44,《ERP——从内部集成起步》 45,设计模式与重构 46,设计模式解析(第2版) 47, 项目管理知识体系指南(PMBOK指南)(第四版) 48,系统分析与设计 Systems Analysis and Design in a Changing World 49,系统分析与设计方法(原书第7版)
50,持续集成:软件质量改进和风险降低之道 51,Java极限编程 52,Spring 攻略 53,java组件设计 54,物理学原理在工程技术中的应用 55,Java EE设计模式:Spring企业级开发最佳实践 56,设计模式之禅 57,金字塔原理 58,流血的仕途 59,大思想的神奇 60,思考致富
Test Driven: TDD and Acceptance TDD for Java Developers Practical Liferay: Java–based Portal Applications Development (Pro) Beginning POJOs: Lightweight Java Web Development Using Plain Old Java Objects in Spring, Hibernate, and Tapestry (Beginning from Novice to Professional) Tapestry 5: Building Web Applications: A step-by-step guide to Java Web development with the developer-friendly Apache Tapestry framework
以下是一些新书 Practical Rails with jQuery Projects Pro Spring Persistence with Hibernate Pro Java EE Spring Patterns Pro Spring 2.5 Grails in Action Spring in Practice Open-Source ESBs in Action SOA in Practice: The Art of Distributed System Design SOA for the Business Developer: Concepts, BPEL, and SCA Service Oriented Architecture for Dummies SOA Security SOA Cookbook Open Source SOA SOA模式 SOA-based Enterprise Integration Open-Source ESBs in Action Enterprise Flexible Rails Lucene in Action, Second Edition JUnit in Action, Second Edition The Art of Unit Testing Collective Intelligence in Action Data Structures and Problem Solving Using Java Flexible Rails(已出版) Implementing SOA: Total Architecture in Practice Building SOA-Based Composite Applications Using NetBeans IDE 6 Practical Rails with jQuery Projects Pro Spring Persistence with Hibernate
1,Set里不允许重复,常用的: HashSet就不说了。 TreeSet里的元素是排过序的。自定义的类的对象默认只能存放一个,如果想放多个并且有排序,则要实现Comparable接口并加上那3个方法。详见: TreeSet自定义排序2, http://blog.csdn.net/java2000_net/archive/2009/01/16/3796064.aspx 3, List要使用removeAll(Collection coll) 对象需实现equals()和hashCode()方法 4,用Collections.sort排序时可以把Comparator接口作为第二个参数 Collections.sort(stuGrade_List, new Comparator() { public int compare(Object o1, Object o2) { double c1 = ((StuGrade) o1).getChinese(); //获得语文的成绩,是doubel型 double c2 = ((StuGrade) o2).getChinese(); if(c1>c2){ return 1; } else if(c1=c2){ return 0; } else return -1; } }); 参考: TreeMap的使用及注意事项
|