2013-10-25 2 views
0

우선, @Valid을 사용하고 json 문자열 대신에 User 인스턴스를 사용하는 경우 사용자를 유효하게 할 수 있습니다. 즉 좋은 예 : 작동 :주석 유효성 검사

@RequestMapping(value = "/add", method = RequestMethod.POST) 
public String addUser(@Valid @ModelAttribute("user") User user, BindingResult result) { 
    userRep.save(user); 
    return "redirect:/"; 
} 

그래서 질문은, @Email, @NotEmpty 예를 들어, 자동으로 주석을 내가 API의 어떤 종류를 생성하고 수신이 JSON 문자열이며, 검증 할 수있는 방법인가? 가장 좋은 방법은 무엇입니까?

@RequestMapping(method = RequestMethod.POST, headers = "Accept=application/json") 
public ResponseEntity<String> createFromJson(@RequestBody String json) {  
    User user = User.fromJsonToUser(json); 
    return new ResponseEntity<String>(user.toJson(),header,HttpStatus.CREATED); 
} 

User.class

public class User { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    @NotEmpty 
    @Length(max = 30) 
    private String firstName; 

    @Email   
    @NotEmpty 
    @Length(min = 3 , max = 50) 
    private String primaryEmail; 

} 
+0

'@ RequestBody' 주석 매개 변수에'@Va 뚜껑 '도. –

+0

'@ Valid'는 json 문자열입니까? ('@ RequestBody''@ Valid' String json)하지만 사용자 객체의 유효성을 검사하고 싶습니다. – Jaxox

답변

0

간단히 봄이 사용자에게 문자열을 구문 분석과 같은 @Valid 주석과 주석을 보자

@RequestMapping(method = RequestMethod.POST, headers = "Accept=application/json") 
public ResponseEntity<String> createFromJson(@RequestBody @Valid User user) {  
    return new ResponseEntity<String>(user.toJson(), header, HttpStatus.CREATED); 
} 

또는

@RequestMapping(method = RequestMethod.POST, headers = "Accept=application/json") 
public ResponseEntity<User> createFromJson(@RequestBody @Valid User user) {  
    return new ResponseEntity<User>(user, header, HttpStatus.CREATED); 
} 
+0

어떻게? 봄 그냥 사용자 개체에 json 문자열을 구문 분석하지 않습니다, 내가 그것을 작동하게하기 위해해야합니까? – Jaxox

+0

내가 무엇이 실종되었는지 확실하지 않습니다. 오류가 발생했습니다 - 요청 엔터티가 요청 된 메서드()에 대해 요청 된 리소스에서 지원되지 않는 형식이기 때문에 서버가이 요청을 거부했습니다 – Jaxox

+0

클래스 경로에 Jackson JSON 매퍼가 있어야합니다. 이 설명서에서 http://docs.spring.io/spring/docs/3.2.4.RELEASE/spring-framework-reference/htmlsingle/#view-json-mapping 및 grep "Jackson"을 참조하십시오. –

관련 문제