[英]Spring MVC @RequestParam values not being extracted from URI as expected
I am wondering how spring split each parameters of a http request. 我想知道spring如何拆分http请求的每个参数。 By example i have this method definition : 通过示例,我有此方法定义:
@RequestMapping(value = "/search.do", method = RequestMethod.GET)
public String searchGet(ModelMap model,
@RequestParam(value = "memberId", required = false) Integer memberId,
@RequestParam(value = "member", required = false) String member) {...}
and i use this url : 我用这个网址:
/search.do?member=T&O=
i get member = T and not member =T&O= 我得到成员= T而不是成员= T&O =
The request params are limited to only memberId and member. 请求参数仅限于memberId和member。 Can i configure spring for solving this problem ? 我可以配置弹簧来解决这个问题吗?
Some characters in URLs have a special meaning. URL中的某些字符具有特殊含义。 If they are supposed to be part of a value they need to be escaped. 如果应该将它们作为值的一部分,则需要对其进行转义。
If your value is T&O= then it needs to be changed to T%26O%3D 如果您的值为T&O =,则需要将其更改为T%26O%3D
&
is used to seperate request parameters. &
用于分隔请求参数。
URL contain request param name and value in following format URL包含以下格式的请求参数名称和值
http://host_port_and_url?name1=value1&name2=value2&so_on
In your case 就你而言
/search.do?member=T&O=
Name -> Value 名称->值
member -> T 成员-> T
O -> (No value- Blank) O->(无值-空白)
So you are getting correct values 所以你得到正确的值
Looking at your controller code, your URL should have been 查看您的控制器代码,您的URL应该已经
/search.do?memberId=T&member=
Then request parameter names will get mapped correctly. 然后,请求参数名称将被正确映射。
If you wish to use same URL as mentioned in your question, change controller code to : 如果您希望使用与问题中提到的网址相同的网址,请将控制器代码更改为:
public String searchGet(ModelMap model,
@RequestParam(value = "O", required = false) Integer memberId,
@RequestParam(value = "member", required = false) String member) {...}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.