异常信息摘要:
Could not create and/or set value back on to object
Could not find action or result
No result defined for action helper.action.admin.UserAction and result input
(这几个是转载)关于SSH框架这种异常的几种可能性总结下:
1. 对应的属性没有加get set 方法
2. 提交表单中有更多的name属性而对应的action 或者model里面没有这个方法(这里重要就包括一个图片button 往往让人们难以发现)如下面表示:
<input type="image" name="Submit" value="提交" οnclick="return checkpwd();" src="images/a_tj.gif"/>
错误信息: target is null for setProperty(null, "x", [Ljava.lang.String;@b0c40e)
3. 在没有spring帮助注入的前况下我们action里面的model 一定要手动new 出来并且在model里面添加空的构造方法
4. Action里面的model 实例对象名字和我们表单中的名字不一致的时候
5、struts2中表单提交按钮:
<input type="Submit" name="Submit" value=" 查 询 " />
这样会报题目的错误.其实把submit的name属性删掉或者
<input type="button" name="Submit" value=" 查 询 " οnclick="document.form.submit();"/>
都是可以解决的,估计凡是在struts2中没有定义getter,setter方法的form中的input都要被抛出异常
6、原来的model类中重写了构造方法,却没有提供默认的空构造函数。
加上public Book(){};即可。
7、最后还有一个坑爹的问题:你的属性命名规范。
例如:有一个表t_txn_info表对应的pojo类是TTxnInfo
你在action类中有一个属性private TTxnInfo tTxnInfo;
这样导致自动生成的setter/getter方法不能识别tTxnInfo,会识别成txnInfo.
曾经吃过亏。最好把tUser的第一第二个字母都小写——tuser,或者去掉t。
最后一直排查问题就是这个变量名的问题..
8、自己挨个排除以上问题后还是没有解决问题,最后怀疑JDK版本问题,本地之前开发使用jdk1.7,后来因为linux服务器已经安装1.6,所以将本机开发换成1.6后编译发布使用都没有问题,发布到linux后却出现问题了。怀疑本地MyEclipse虽然设置为1.6,但实际使用的仍然是1.7。折磨两天的问题终于解决了。