千万注意:对象非空的判断一定要时时刻刻注意!否则极有可能抛出空指针异常。吃过这个苦头,以后就更要注意了。
-》空指针异常,恐怕是Java编码中最常见的异常了。(20090512追加)
邮件文本转换中遇到的问题:
问题 1 :
this. *** MessageDao 为空 了 , 原来,需要在 ManagerFacadeImpl 类的初始化方法中添加相应的 set语句。
比如,想在邮件管理中使用 *** MessageDao 的话,就添加如下语句: mailManager.setBbsMessageDao( *** MessageDao);
-》 ManagerFacadeImp是门面模式,在这里面可以进行各种初始化工作(比如***DAO),这样,别的地方想使用( ***DAO )的话,可以直接拿来就用。(20090512追加)
问题 2 :截获到的异常信息: Transform of class jp.co.intra_mart.***.yyy not supported
原因:虽然在类 M Data 中,使用了 类 yyy (被 M Data 作为成员变量使用), 已经 加了注解, :
@Element (name = " yyy " , required = false )
private YYY yyy ;
但是在 YYY 类中,没有对想使用的属性加上注解。
修改如下:
@Element(name = "title", required = false )
private String title ;
问题 3 : java.lang.reflect.InvocationTargetException
导致这个异常的原因是空指针异常,原来是属性创建时间为 null 了。
解决方案:添加非空的判断和处理,如下所示:
@Element (name = "created_date" , required = false )
public String getCreatedDateString() {
Date d = getCreatedDate();
if (d != null ) {
return dateFormat .format(d);
} else {
return null ;
}
}
PropertyNotFoundException :
具体异常信息: Caused by: javax.el.PropertyNotFoundException : 'minRang' is an unknown bean property of 'jp.co.intra_mart. **** . **** l'
原因: JSP 文件中对应属性名写错了( Bean 文件中的属性名和 JSP 文件中的对应属性名不一致)。
javax.servlet.jsp.JspException: org.apache.struts.taglib.html.BEAN という名前の bean のプロパティ mailSendType に対するゲッターメソッドがありません
这个异常的意思是:mailSendType这个属性没有写 get 方法。
问题现象:设置了断点, debug 却进不去。
解决过程:首先确认了服务器是以 debug 方式启动的,再调查:最外层的调用代码( Action 中)被注释了。
问题现象:往 list 中插对象,该对象确实非空,却报了空指针异常 。
原因: list 本身为空了。
-》按道理讲,往list中插入对象,即使被插入的对象是空时,应该也不至于会报空指针异常这种错误。(20090512追加)
建案件的画面进不去(直接跳到了错误页面),不要纠缠于页面。找到对应的 Action ,设置断点, debug 发现,每次都跳入 token 处理段(防止二次重复提交的),原来是同事在对应前一个问题(防止二次重复提交)时引起了这个问题。