리소스에 대한 부분 업데이트를 수행하려고합니다. @ModelAttribute (기존 리소스로드)와 @RequestBody를 결합하여 제공된 필드로 채운 다음 @Valid를 실행할 수 있다는 생각이 들었습니다. @ModelAttribute가 다른 것보다 먼저 호출된다는 것을 이해합니다.Spring REST 컨트롤러 부분 업데이트 기존 리소스
내 컨트롤러가 ModelAttribut을 호출하고 내 ContentPatternConverter를 사용하여 ContentPattern 엔터티를 올바르게 만듭니다. 그 후에는 @RequestBody에서 제공된 필드로 "패턴"을 채우고 마지막으로 그것이 유효한지 확인하려고합니다. 비록 ModelAttribute를 통해 만들어진 후 내 ContentPattern은 RequestBody로 채워지지 않았지만.
@RequestMapping(value = "/patterns/{id}", method = RequestMethod.PUT, produces = "application/json")
@ResponseBody
public ResponseEntity<ContentPattern> updateContentPattern(Principal principal, @ModelAttribute("id") @RequestBody ContentPattern pattern) { //implementation }
모든 아이디어를 어떻게 내 접근 방식을 사용하여이 문제를 해결하는 방법 또는 다른 (더 나은) 솔루션이 있다면? 1
UPDATE 후 좀 더 내가 솔루션을 다음과 같이 와서 연구.
- 내 자신의 주석 @RequestBodyPathVariable
- 이 HandlerMethodArgumentResolver를 구현 RequestBodyPathVariableMethodArgumentResolver을 쓴 만들었습니다. 그것이하는 일은 1) URI 경로 변수 (예 : patterns/{id})를 기반으로 사용자 정의 변환기에서 기존 자원을 가져옵니다. 2) 요청 본문에서 오브젝트를 작성합니다. 3) 기존 자원과 제공된 자원을 병합합니다. 4) 최종 객체를 검증합니다. https://gist.github.com/2687913
(더 나은/다른 병합 방법이 다른 경우에 필요)
유용한 링크 : :. http://blog.42.nl/articles/leveraging-the-spring-mvc-3.1-handlermethodargumentresolver-interface HTTP 5) 최종 객체
페이지의 소스 코드에 대한 요점을 반환합니다 : //stackoverflow.com/questions/6591665/merging-two-objects-in-java
귀하의 조언에 감사드립니다. 나는 같은 개념을 사용하면서 끝났지 만 HandlerMethodArgumentResolver를 구현했습니다. – horte