2017-09-13 73 views
0
@CrossOrigin(origins = "http://localhost:3000") 
@GetMapping("") 
public ResponseEntity<List<ToDoItemViewModel>> loadCategoriesByName(@RequestParam(required = false) String name) 
{ 
    List<ToDoItemViewModel> allItemsByCategoryName = toDoItemService.getAllItemsByCategoryName(name); 
    return new ResponseEntity<>(allItemsByCategoryName, HttpStatus.OK); 
} 

我怎麼能只是一個基本類型傳遞給控制器​​,這裏是我的$.ajax看起來像春REST API,傳遞一個原始類型到控制器

$.ajax({ 
    method: 'GET', 
    url: "http://localhost:8080/todItems", 
    contentType: 'application/json', 
    crossDomain: true, 
    data: 'Work', 
    success: (resp) => { 
     console.log(resp) 
    }, 
    error: (resp) => { 
     console.log(resp); 
    } 

}) 

現在,當我調試它,它確實將請求發送給此控制器,但由於某種原因,String name始終爲空,您能否告訴我必須在我的ajax請求中調整什麼,這可能是data字段中的內容。

+1

你的'data'part應該像'data:{name:'Work'}' – barbakini

+0

@barbakani,嘿,如果我試試這個我沒有''訪問控制-Allow-Origin'頭部存在',所以我認爲它尋找一些其他方法超載,有沒有其他的建議? – Alexander

+0

以及@barbakini註釋,您需要使用'@ Controller'或'@ RestContrller'來獲取json數據。 –

回答

1

您正在使用請求參數(@RequestParam註釋)的GET請求。 @RequestParam表示請求中的參數通過url傳遞,就像這樣;

http://localhost:8080/todItems?name=Work 

所以,你只需要將數據移動到url參數。 如果您希望通過請求正文發送數據,請不要使用GET方法,而應使用POST。許多Web服務器不支持GET請求中的請求主體

+0

ye我開始相信,這是春天boog的問題,我只是無法訪問此方法,如果(必需= false)不是當下。所以在理論上,如果我想獲得所有的項目,他們的分類id == 2,我應該使用後? – Alexander

+1

@Alexander通常人們更喜歡使用GET方法來返回一些東西。在你的情況下,使用查詢參數應該可以正常工作(所以使用'/ todItems?category = 2')。 'POST'通常用於創建新項目,其中請求主體包含該項目應該是什麼的表示。 – g00glen00b

+0

當我使用'@PathVariable String name'和'@GetMapping(「/ {name}」)'時,它們工作,但我只是在理論上要求 – Alexander

相關問題