1
요청 XML이 포함 된 문자열을 @RequestBody로받는 컨트롤러가 있습니다.Spring REST MVC : 형식을 사용하지 않고 들어오는 XML 유효성 확인
@RequestMapping(method = RequestMethod.POST, value="/app-authorization")
public Response getAppAuthorization(
HttpServletResponse response, BindingResult results,
@RequestBody String body){
log.info("Requested app-authorization through xml: \n" + body);
Source source = new StreamSource(new StringReader(body));
RefreshTokenRequest req = (RefreshTokenRequest) jaxb2Mashaller.unmarshal(source);
validator.validate(req, results);
if(results.hasErrors()){
log.info("DOESN'T WORK!");
response.setStatus(500);
return null;
}
InternalMessage<Integer, Response> auth = authService.getRefreshToken(req);
response.setStatus(auth.getHttpStatus());
return auth.getReponse();
}
AuthorizationValidator은 다음
@Component("authenticationValidator")
public class AuthenticationValidator implements Validator{
public boolean supports(Class<?> clazz) {
return AuthorizationRequest.class.isAssignableFrom(clazz);
}
public void validate(Object target, Errors errors) {
errors.rejectValue("test", "there are some errors");
}
}
나는 그런 방법으로 내 컨트롤러에 개체 검사기를 삽입 할 수있는 방법이 있는지 알고 싶습니다 그 :
- @Autowired \ n 검사기 검사기입니다. 내가 자동으로 내 AuthenticationValidator에 대한 참조를 얻게합니다.
- 모든 컨트롤러는 클래스를 명시 적으로 나타내는 하나 이상의 유효성 검사기와 연결됩니다. 스프링 MVC는 JAXB의 Unmarshaller에 전화를 돌보는와
@RequestMapping(method = RequestMethod.POST, value="/app-authorization") public Response getAppAuthorization(@Valid @RequestBody RefreshTokenRequest req, BindingResult results){ if(results.hasErrors()){ log.info("DOESN'T WORK!"); response.setStatus(500); return null; } InternalMessage<Integer, Response> auth = authService.getRefreshToken(req); response.setStatus(auth.getHttpStatus()); return auth.getReponse(); }
: