2014-02-10 2 views
0

컨트롤러에 대한 게시물 호출을하려고하는데, 예상되는 객체에 Set 데이터 유형이 포함되어 있고 게시 데이터의 모양이 확실하지 않습니다.Spring에서 set 객체를 컨트롤러에 바인딩하는 방법

모델 :

public class Notebook{ 
    private string name; 
    private Set<Todo> todos; 
} 

public class Todo{ 
    private String name; 
} 

컨트롤러 현재 나는 아래의 예와 같이 게시 시도

@RequestMapping(method = RequestMethod.POST) 
    public void createNotebook(Notebook q){ 
    questionnaireService.saveOrUpdateNotebook(q); 
} 

:

curl --data "name=some notebook&todos[0].name=todo1&todos[1].name=todo2" http://localhost:8080/api/notebook 

가 작동하지 않습니다. 누구나 세트에 대한 경험이 있습니까?

답변

1

요청을 Notebook 유형의 개체에 매핑 할 수 있도록 을 @RequestBody 주석으로 정규화해야합니다. Spring MVC에서 입력 데이터와 변환기의 형식에 대한 더 많은 정보는 : Mapping the request body with the @RequestBody annotation.

프런트 엔드의 데이터를 JSON 형식으로 보내고 Jackson JSON을 사용하여이를 Java 객체로 변환합니다. 당신이 경로를 이동하는 경우, 직접 Set<String>todos을 선언 할 수 있으며, 입력

{ 
    name: "some notebook", 
    todos: ["todo1", "todo2"] 
} 
+1

감사 할 것이다. Set에서 List로 데이터 유형을 변경하고 이전에 사용하던 배열 인덱스를 사용할 수도 있습니다. – user1099123

관련 문제