当你在sturts2提交一个url或表单时候

当有个参数a出现多次时候,eg: http://url?a=XXX&a=YYY.

接受action有属性String a.

这时候a的值就是以逗号和空格分隔的字符串。

a = XXX, YYY

 

如果你的参数本来就是多个值,比如checkbox传递过来的。这样没有什么问题。但如果你其实只是传递一个值,比如某个id 这时候就不对了。

======================================================

这是因为:

1. org.apache.struts2.dispatcher.Dispatcher.createContextMap(HttpServletRequest, HttpServletResponse, ActionMapping, ServletContext)

使用request.getParameterMap()接受所有参数。

2. action中a属性为String, 最后将调用字符串的转换器对参数进行解析。

com.opensymphony.xwork2.conversion.impl.StringConverter.convertValue(Map<String, Object>, Object, Member, String, Object, Class)

======================================================

附调用图一张。

struts2 stringconvert

Don't judge me