struts2 2.1升级到2.3需要注意的一个小细节

在给公司的比较老的项目进行Struts2 2.1升级到2.3的时候遇到了一些小问题写出来以便以后查阅
在struts2中从前台获取表单数据可以使用action类的属性获取,但是在2.1和2.3 这两个版本中有一些细微的差异,对于简单的单词属性来说没有问题如name,但是对于稍微复杂一点的单词属性就会有一席差异,比如nName,在设置getter,setter方法的时候就需要注意一下,getter方法没有区别,只是setter方法需要注意,2.1版本中可以使用public String setNName(String nName){…},这样么有问题,可以获取到数据,但是在2.3版本中这样写就获取到空的数据,所以需要写成public String setnName(String nName){…},也就是说set后面的单词需要与属性完全一致,下面是验证的例子,(容器使用的was8.5)
下面是2.1和2.3使用简单单词的情况(2.1版本的jar包是从别的项目中拷贝过来的懒得一个个去挑了)
2.1和2.3版本的代码完全一致
struts.xml文件的配置情况,
这里写图片描述

index.jsp的代码
这里写图片描述

Action类的代码
这里写图片描述

User类的代码
这里写图片描述

查看结果
2.1版本
这里写图片描述

2.3版本
这里写图片描述

下面是使用复杂单词的代码2.1和2.3完全一样就不一一展示了
index.jsp
这里写图片描述

Action代码
这里写图片描述

User代码
这里写图片描述

结果展示
2.1版本
这里写图片描述

2.3版本
这里写图片描述

我们看到2.3 版本中的控台输出是空的,也就是说没有从前台获取到数据
下面我们来做一下改动
只需要改动User的nName的setter方法即将setNName 改为setnName(注意大小写)
这里写图片描述

下面再让我们看一下结果
这里写图片描述

可以看到能够获取到数据了 当然用比较新的eclipse自动生成的getter,setter都是没有问题的 这问题主要还是出现在比较古老的项目从Struts2.1升级到2.3版本过程中