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文件的配置情况,
struts2 2.1升级到2.3需要注意的一个小细节_第1张图片

index.jsp的代码
struts2 2.1升级到2.3需要注意的一个小细节_第2张图片

Action类的代码
struts2 2.1升级到2.3需要注意的一个小细节_第3张图片

User类的代码
struts2 2.1升级到2.3需要注意的一个小细节_第4张图片

查看结果
2.1版本
struts2 2.1升级到2.3需要注意的一个小细节_第5张图片

2.3版本
struts2 2.1升级到2.3需要注意的一个小细节_第6张图片

下面是使用复杂单词的代码2.1和2.3完全一样就不一一展示了
index.jsp
struts2 2.1升级到2.3需要注意的一个小细节_第7张图片

Action代码
struts2 2.1升级到2.3需要注意的一个小细节_第8张图片

User代码
struts2 2.1升级到2.3需要注意的一个小细节_第9张图片

结果展示
2.1版本
struts2 2.1升级到2.3需要注意的一个小细节_第10张图片

2.3版本
struts2 2.1升级到2.3需要注意的一个小细节_第11张图片

我们看到2.3 版本中的控台输出是空的,也就是说没有从前台获取到数据
下面我们来做一下改动
只需要改动User的nName的setter方法即将setNName 改为setnName(注意大小写)
struts2 2.1升级到2.3需要注意的一个小细节_第12张图片

下面再让我们看一下结果
struts2 2.1升级到2.3需要注意的一个小细节_第13张图片

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

你可能感兴趣的:(java)