8

我想知道spring如何拆分http请求的每个参数。例如,我有这个方法定义:

@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) {...}

我使用这个网址:

/search.do?member=T&O=

我得到成员 = T 而不是成员 =T&O=

请求参数仅限于 memberId 和 member。我可以配置弹簧来解决这个问题吗?

4

3 回答 3

11

URL 中的某些字符具有特殊含义。如果它们应该是值的一部分,则需要对其进行转义。

如果您的值为 T&O= 则需要将其更改为 T%26O%3D

于 2013-03-15T13:27:52.320 回答
4

&用于分隔请求参数。
URL 包含以下格式的请求参数名称和值

http://host_port_and_url?name1=value1&name2=value2&so_on

在你的情况下

/search.do?member=T&O=  

名称 -> 值
成员 -> T
O -> (无值 - 空白)
所以你得到正确的值

于 2013-03-15T11:17:50.087 回答
4

查看您的控制器代码,您的 URL 应该是

/search.do?memberId=T&member=

然后请求参数名称将被正确映射。

如果您希望使用问题中提到的相同 URL,请将控制器代码更改为:

public String searchGet(ModelMap model,
@RequestParam(value = "O", required = false) Integer memberId,
@RequestParam(value = "member", required = false) String member) {...}
于 2013-03-15T11:18:03.690 回答