本文主要是介绍JEE一些常用错误收集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
/*
该博文长期更新 欢迎大家提问 如果新的值得收录的问题 我也将收录进去
最新跟新时间 2015年6月12日12:12:45
*/
1首先是最常见的错误no result defined for action
直接字面翻译,对应名称的resut 没有定义, 出现这个错误 大致是struts 配置文件出错,补上响应的result即可
2另外一个是这个异常的特例 no result defined for action result input
input 这个result name 我们一般不会主动去抛出,这个错误基本上是在struts 自动注入的时候产生的,我遇到了2种可能导致这个错误的情况
传入类型不匹配 注入失败
这个bug 可以通过跟踪 浏览器发出的request请求 检查出来, 检查传入值的类型 与 对应的变量名称
action bean 是单例对象,前一次的input 异常被单例保留 影响到下一次的方法调用
这个bug 是在struts 与spring 整合的时候出现, struts 将classFactory 交给spring来处理。 spring 在初始化的时候会默认生成单例对象,在实际测试过程中struts2 与spring结合时,如果spring 生成的是单例 系统注入bean 出现了input 错误 这个错误会被保留在单例相关的变量中,下一次调用将会继续抛出异常,表现行为为一次输出出错,相关的所有行为都会报错。解决方案是将spring 中action bean 的属性集中加入 scope="prototype" 这个属性表明 将为每一个request 请求创建一个action 对象, 这样前着的错误将不会出现
3 org.hibernate.QueryException: unexpected char: '`'
这个错误就比较低级了, 我们都知道 hibernate 是通过实体管理器查询对象 他自身的查询形成了一种被称为hql的查询语言, 我们通过 org.hibernate.Session.createQuery("")查询用的语句 就是使用hql 解析的 hql语句 与sql语句 有很大区别, sql中的 通配 * 与列名标注 · 都是不支持的,出现这种情况我们大多是想要使用sql语句查询 那么我们需要调用的时候 createSQLQuery('')
这个异常也设计到一些相关的东西 在sql中会存在一些保留字,我们表的列名称可能与保留字冲突,sql解析的时候 并不会智能的识别该位置为列名称而不是保留字,解决这个问题的途径有两种, 第一写完整的名称 表明/结果集名 .列名 这就相当于绝对路径,sql 解析的时候会自动补上数据库的名称, 第二个使用 列标注 · 这个符号在键盘的横排数字键1的左边 用这个将列名框起来 数据库就知道这个为列名了, 这个是最不容易出错的行为
4 unexpected Exception caught setting 'XXXXX' on 'class com.opensymphony.xwork2.ActionSupport:
这个错误也是在struts 注入的时候出现的, 表明在对应类中找不到上传的指定属性, 出现这个错误 大概是请求出错了 class 后面的就是处理你请求的class的完整路径,对着检查就行了,如果报了上述错误,那么就说明请求出错,并且请求被系统默认分派给 根Action ActionSupport类 解决方案 就是检查请求路径与对应class中的属性名
/*
这下面记录一些其他 在做JEE项目时候遇到的问题
*/
Calendar对象 与 java.sql.Timestamp 对象 之间的比较问题, 两者不能用after比较 ,比较的值永远是false ,虽然编译通过
解决方案是 将calendar对象 转换成Timestamp 再比较
推测原因 after(when) 方法存在类型检测,封装部分异常,两种类型的对象不能比较 直接返回false
这篇关于JEE一些常用错误收集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!