リクエストXMLを含む文字列を@RequestBodyとして受け取るコントローラーがあります。
@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への参照を自動的に取得します
- すべてのコントローラーは、クラスを明示的に示すことなく、1つ以上のバリデーターにリンクされています。