40.IE和火狐浏览器 对于JavaScript的支持:
在qq书签中录入了很多关于ie和火狐对于JavaScript的区别,等等不再赘述。在项目中遇到的问题记录下来。
Document.getElementByID(“XX”).value 在ie,火狐中都可行。
在火狐中,jsp页面中用到了dojo框架时,在文本框的格式中采用了numberspinner这个形式时,在火狐中使用传统的document.XX.XX.value,并不能把值传到JavaScript的function函数中,唯有通过Document.getElementByID(“XX”).value方可。
41.关于hibernate延迟加载的异常 no session or session is closed
同样在qq书签中收入了很多关于此异常和关于hibernate延迟加载机制的网址。
关于这个异常,是在延迟加载中,简单的理解就是当session已经关闭后,又出现了hibernate试图通过session从数据库中加载实际的数据集,所以报出session已关闭的错误。
但是如果我们采用了延迟加载机制,希望在一些情况下,实现非延迟加载时的功能,在提供一个完整的Bspinq对象时,把所关联的bspInqParts 信息在session关闭之后仍然可以使用。这就要采用hibernate.initialize方法,可以通过强制加载关联对象来实现这一功能。
Hibernate.initialize(inq.getBspInqParts());
Session.close(); 搞定。
42. 为了实现透明化的延迟加载机制,hibernate进行了大量努力。其中包括JDK Collection接口的独立实现。
如果我们尝试用HashSet强行转化Hibernate返回的Set 型对象:
Set hset = (HashSet)user.getAddresses();
就会在运行期得到一个java.lang.ClassCastException, 实际上,此时返回的是一个Hibernate的特定Set实现“net.sf.hibernate.collection.Set”对象,而非
传统意义上的JDK Set实现。这也正是我们为什么在编写POJO时,必须用JDKCollection 接口(如Set,Map), 而非特定的JDKCollection 实现类(如HashSet、HashMap)申明Collection属性的原因。
43.验证码刷新显示问题:
在项目中验证码的刷新显示困扰了我很久,在近期得以解决。
在使用action的方法中 return null;(若return input;会有异常抛出,故下文中的src图片定位选择了用servlet进行,但缺点是servlet被执行了两遍,在以后的项目中寻求变化)
在servlet配置中为了防止被action过滤,Uri-pattern 改为VImage.jsp
在JavaScript中的src定义图片的显示时用servlet:’VImage.jsp’ +’ ?’ + Math.random();(使用随机数是为了保证刷新出来的图片不一样)
今天在写项目的时候出现了一个这样的错误,不知道是怎么回事,后来在网上找资料发现了解决方法:
struts.multipart.saveDir没有配置。
struts.multipart.saveDir用于指定存放临时文件的文件夹,该配置写在struts.properties文件中。例如,如果在struts.properties文件加入如下代码:
struts.multipart.saveDir = /tmp
1. Window --> Preferences --> General --> Startup and Shutdown -->找到"Automatic Updates Scheduler " 项去掉前面的勾。(不要看上面三个复选框,要在下面列表框里面靠下面一点找到)####重点注意下!!!
2. Window --> Preferences --> Myeclipse Enterprise Workbench --> Maven4Myeclipse --> Maven --> "Download repository index updates on startup" 去掉前面的勾。
46.input标签之中disable的注意:
如果<input type="text" name="productVO.type" disabled id="producttype" size="30" />存在disabled属性,那么后台action是不能接收到productVO.type的值的,去掉disabled即可。
47.hidden类型标签
hidden类型的标签,在javascript中是不能做焦点判断的。
48.ckeckbox js 全选功能name命名问题:
jsp中,当做checkbox全选功能时,其name不能命名为“XXXVO.name”,因为在js中用document.getElementsById(XXX)时,只能选中一个,而不能像name那样可以全部选中。
49.如同48:
jsp中,当做checkbox全选功能时,在js中用var user = document.forms[0].userid,当对象为多个时,user取出的是数组,而当对象为一个时,user取出的并不是数组,所以在做全选时,应该对user.length进行判断if(user.length),如果不是数组user.length返回false,再对其进行操作。
50.在sever中,关闭掉浏览器,重开之后,session丢失原因:
重新开浏览器之后,会发现原来的session会丢失,其实session在sever并没有丢失,而是重开浏览器之后session的id变了,所以浏览器会找不到session。解决办法:利用cookie将原先session的id保存进Map中,在重开浏览器之后,再通过cookie把map中的sessionId找到,然后通过id把原先session对象取出(这一步可以通过sessionListener实现)。
sessionListener主要是监听session对象的创建与销毁,当监听session创建时,通过create方法把session记入自己定义的Map对象中。通过自己定义的相应方法可以把session从Map中取出。当session销毁时,通过destroy方法把session从Map中删除,否则会造成内存的泄露。
51.通过把JSESSIONID放入cookie中,在action中会通过request.getsession自动找到原来的session。
不断更新总结中。。。 如有差错,欢迎批评指正。。。