Spring仅返回查询字符串中的第一个参数

bpg*_*rgo 1 spring curl spring-mvc spring-web

Spring 仅返回查询字符串中的第一个参数,后续参数丢失。

使用curl调用以下URL时:

 curl -i -X GET -b usercookie.txt -c usercookie.txt http://localhost:8080/appname/users/user-id/campaigns?title=JSON&itemPerPage=5&page=0&orderBy=startDate
Run Code Online (Sandbox Code Playgroud)

只有title参数具有非空值,request.getQueryString()仅包含“title=JSON”

当调用这个时:

curl -i -X GET -b usercookie.txt -c usercookie.txt http://localhost:8080/appname/users/user-id/campaigns?page=0&title=JSON&itemPerPage=5&orderBy=startDate
Run Code Online (Sandbox Code Playgroud)

仅包含request.getQueryString()“page=0”

控制器代码:

@Controller
public class Campaign {

...

    @RequestMapping(value = {"/users/{userId}/campaigns", "/users/{userId}/campaigns/"}, 
            method = RequestMethod.GET)
    @ResponseBody
    public CampaignListResponse getCampaignList(
            @PathVariable(value="userId") String reqUserId,
            @RequestParam(required=false) Integer page, 
            @RequestParam(required=false) Integer itemPerPage,
            @RequestParam(required=false) String orderBy,
            @RequestParam(required=false) String status,
            @RequestParam(required=false) String title,                                         
            HttpServletRequest request,
            HttpServletResponse response,
            @CookieValue("session") String session) {
        LOGGER.debug("reqUserId:{} page:{}, itemPerPage:{}, orderBy:{}, state:{}, title:{}", reqUserId, page, itemPerPage, orderBy, status, title);
        LOGGER.debug("query string:{}", request.getQueryString());
...
Run Code Online (Sandbox Code Playgroud)

这可能是什么原因造成的?我希望以下所有参数在 request.getQueryString() 中都有一个值,并作为单独的 @RequestParam 变量:

page=0&title=JSON&itemPerPage=5&orderBy=startDate
Run Code Online (Sandbox Code Playgroud)

编辑Spring版本:3.2.2

Ale*_*cob 5

在您的终端中,只需将整个 URL 放在双引号之间即可!&是一个特殊字符,要求任务在后台运行。您无需更改代码。

尝试这个 :

curl -i -X GET -b usercookie.txt -c usercookie.txt "http://localhost:8080/appname/users/user-id/campaigns?title=JSON&itemPerPage=5&page=0&orderBy=startDate"
Run Code Online (Sandbox Code Playgroud)