2017-06-17 58 views
0

嗨它可能看起来像重复但不是。在弹簧控制器中获取表单数据

我正在构建一个使用spring启动的休息api,并且需要在POST请求中获取客户端应用程序发送的表单数据。 用于测试目的我正在使用邮递员。到目前为止,我已经试过下面

@PostMapping("/feed/comment/add/{feedId}") 
    public ResponseEntity<BaseResponse> addComment(@RequestHeader(name = Constants.USER_ID_HEADER) int userId, 
      @PathVariable("feedId") int feedId, 
      @RequestParam("comment") String comment 
      ) { 
     LOGGER.info("Received add comment request with comment:"+comment); 

     return new ResponseEntity<BaseResponse>(new BaseResponse("You are not feed owner", RESPONSETYPE.ERROR), HttpStatus.UNAUTHORIZED); 
    } 

这给了错误 “String类型,必需的参数 '注释' 不存在”

方式二试:

@PostMapping("/feed/comment/add/{feedId}") 
public ResponseEntity<BaseResponse> addComment(@RequestHeader(name = Constants.USER_ID_HEADER) int userId, 
     @PathVariable("feedId") int feedId, 
     @RequestParam Map<String, String> values 
     ) { 
    for(String key: values.keySet()) { 
     System.out.println(key+":"+values.get(key));    
    } 

    return new ResponseEntity<BaseResponse>(new BaseResponse("You are not feed owner", RESPONSETYPE.ERROR), HttpStatus.UNAUTHORIZED); 
} 

这给有线输出:

------WebKitFormBoundarymk97RU1BbJyR0m3F 
Content-Disposition: form-data; name:"comment" 

test comment 
------WebKitFormBoundarymk97RU1BbJyR0m3F-- 

我很确定,使用平面servlet我可以使用request.getParameter(“comment”)访问它 不知道如何在弹簧休息控制器的情况下获取它。

回答

0

“必需的字符串参数”注释“不存在”此错误发生在需要此参数时,但您未发送它。

@RequestParam(value =“comment”,required = false) 这将使注释参数为可选项。所以如果你错过了发送评论参数的话。