2017-06-17 68 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) 這將使註釋參數爲可選項。所以如果你錯過了發送評論參數的話。