升级后暴露出挺奇怪的一个问题
jsp页面表单里有name="obj.var" value="123"的input域
在提交表单时action="/xxx.do?obj.var=123"
这样,在后台通过getter方法获取到的obj.getVar()的值是"123, 123"
这应该是url拼接的参数和表单提交的参数重复导致的
但是这段代码并没有改过,在未升级前(2.0.6)是能正确获取到obj.getVar()的值是"123"的
而升级到之后(2.3.15.1)获取到的就是"123, 123"
有高手来帮忙解释一下这个现象么?
先行谢过
8 个解决方案
#1
你获取的是“123,123”还是【“123”,“123”】如果是后一种,你可以试试用索引去取一下,取一个就可以了
#2
obj对象里面的var是String类型,所以取到的是"123, 123"
重点是以前使用struts2.0.6的时候,取到的是"123"
升级到struts2.3.15.1之后,取到的就是"123, 123"了
#3
是不是你的表单域中有两个‘obj.var’;在struts2的任何版本中,如果表单域中包含两个相同的对象的时候struts会自动封装成item形式。
#4
你获取的是“123,123”还是【“123”,“123”】如果是后一种,你可以试试用索引去取一下,取一个就可以了
obj对象里面的var是String类型,所以取到的是"123, 123"
重点是以前使用struts2.0.6的时候,取到的是"123"
升级到struts2.3.15.1之后,取到的就是"123, 123"了
是不是你的表单域中有两个‘obj.var’;在struts2的任何版本中,如果表单域中包含两个相同的对象的时候struts会自动封装成item形式。
如果是表单form里面有两个域,则无论是2.0.6还是2.3.15.1都会封装成"123, 123",这个没什么问题
现在的情况是表单form里面有一个"obj.var",在拼接请求url的时候又拼了一个"obj.var=123"
这样在2.0.6和2.3.15.1两个版本就出现了截然不同的两种情况:"123"和"123, 123"
这是为啥呢?
#5
页面估计有id相同的input输入框
#6
页面估计有id相同的input输入框
jsp:
<input id="obj.var" name="obj.var" value="123">
js:
fm.action="xxx.do?obj.var=123";
fm.submit();
这样obj.var既存在于表单里也存在于url里
在struts2.0.6,后台获取的就是"123"
在struts2.3.15.1,后台获取的就是"123, 123"
#7
页面估计有id相同的input输入框
jsp:<input id="obj.var" name="obj.var" value="123">
js:fm.action="xxx.do?obj.var=123";
fm.submit();
这样obj.var既存在于表单里也存在于url里
在struts2.0.6,后台获取的就是"123"
在struts2.3.15.1,后台获取的就是"123, 123"
确实是的,你这样会存在封装item形式的,二者取其一吧,
#8
#1
你获取的是“123,123”还是【“123”,“123”】如果是后一种,你可以试试用索引去取一下,取一个就可以了
#2
你获取的是“123,123”还是【“123”,“123”】如果是后一种,你可以试试用索引去取一下,取一个就可以了
obj对象里面的var是String类型,所以取到的是"123, 123"
重点是以前使用struts2.0.6的时候,取到的是"123"
升级到struts2.3.15.1之后,取到的就是"123, 123"了
#3
你获取的是“123,123”还是【“123”,“123”】如果是后一种,你可以试试用索引去取一下,取一个就可以了
obj对象里面的var是String类型,所以取到的是"123, 123"
重点是以前使用struts2.0.6的时候,取到的是"123"
升级到struts2.3.15.1之后,取到的就是"123, 123"了
是不是你的表单域中有两个‘obj.var’;在struts2的任何版本中,如果表单域中包含两个相同的对象的时候struts会自动封装成item形式。
#4
你获取的是“123,123”还是【“123”,“123”】如果是后一种,你可以试试用索引去取一下,取一个就可以了
obj对象里面的var是String类型,所以取到的是"123, 123"
重点是以前使用struts2.0.6的时候,取到的是"123"
升级到struts2.3.15.1之后,取到的就是"123, 123"了
是不是你的表单域中有两个‘obj.var’;在struts2的任何版本中,如果表单域中包含两个相同的对象的时候struts会自动封装成item形式。
如果是表单form里面有两个域,则无论是2.0.6还是2.3.15.1都会封装成"123, 123",这个没什么问题
现在的情况是表单form里面有一个"obj.var",在拼接请求url的时候又拼了一个"obj.var=123"
这样在2.0.6和2.3.15.1两个版本就出现了截然不同的两种情况:"123"和"123, 123"
这是为啥呢?
#5
页面估计有id相同的input输入框
#6
页面估计有id相同的input输入框
jsp:
<input id="obj.var" name="obj.var" value="123">
js:
fm.action="xxx.do?obj.var=123";
fm.submit();
这样obj.var既存在于表单里也存在于url里
在struts2.0.6,后台获取的就是"123"
在struts2.3.15.1,后台获取的就是"123, 123"
#7
页面估计有id相同的input输入框
jsp:<input id="obj.var" name="obj.var" value="123">
js:fm.action="xxx.do?obj.var=123";
fm.submit();
这样obj.var既存在于表单里也存在于url里
在struts2.0.6,后台获取的就是"123"
在struts2.3.15.1,后台获取的就是"123, 123"
确实是的,你这样会存在封装item形式的,二者取其一吧,