项目中struts2碰到的相关错误

来源:互联网 发布:软件开发实习生 翻译 编辑:程序博客网 时间:2024/06/10 05:26

  1:关于数据类型转换:我们知道,struts2是通过拦截器来实现数据的收集的,即,把表单的值注入到pojo的属性中,在注入之前,需对数据进行转换,但如果转换失败,则pojo对象不会生成,为null.   所以,在某些操作中,比如更新动作,就一般提示说找不到指定的action或没有指定input,这首先就想到路径问题,其实并不是!因为在action中引用pojo对象,但此对象为null,则action也就不会执行了,所以才提示404错误!

 

  2 在定义POJO属性的数据类型时,有时我们比较随便,目前我都定义成基本类型,int,double,表面上没什么,但是与它们的包装类类型还是有所不同的,基本类型定义会默认初始化。在此项目中,与iBatis做持久层,作查询的时候,项目的查询参数在设计上是使用pojo对象,所以parameterClass=pojo对象,如果做查询时,属性的数据类型为基本类型,动态SQL写起来就麻烦了,比如我有一个int类型的查询条件,但在页面上客户并不输入其值查询,可是,sql_map里却会显示此值为0!所以为了达到目标,还需判断此值不能为0,而如果是Integer类型则直接isNotNull就OK了。同时,在有的业务中,比如单据状态,0代表编辑,这个时候,你就不能指定isNotEqual了,因为如果用户刚好查询编辑状态的单据呢!再者,我们iBatis的resultMap对应中,一般默认都是java.lang.Integer,基本类型都是其包装类型,所以对pojo的基本数据类型定义还是以包装类型的为好。

 

3 关于action no result的错误,场景是:如果请求的action有错误,它就会转到对应的input路径去,有时action里的错误比较难找,特别是变量多,代码复杂的情况下,有一个调试工具可以很直观的解决此问题,在指定input里(比如一个jsp)加入以下代码:

   <s:fielderror/>
  <s:debug />
  <a href="javascript:void(0);" onclick="toggleDebug('debug');return false;">[调试信息]</a>

原创粉丝点击