그래서 @RestController가 있으며 프런트 엔드 응용 프로그램의 스키마를 기반으로 XML을 반환하고 유효성을 검사하여 편집기에 표시하려고합니다. 오류를 json 형식으로 처리하여 js로 처리하고 표시하도록합니다.스프링 레스트 컨트롤러 @ExceptionHandler가 xml 콘텐츠 및 json 오류를 반환합니다.
@RestController
public class UserController {
@RequestMapping(value = "/test",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_XML_VALUE)
public ResponseEntity<String> throwException(
@RequestParam(value = "flag", defaultValue = "false") Boolean flag
) throws Exception {
if (flag) {
throw new Exception();
} else {
return ResponseEntity.ok("<xml>hello</xml>");
}
}
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler(Exception.class)
@ResponseBody
ServerError exceptionHandler(HttpServletRequest req, Exception ex) {
return new ServerError(req.getRequestURL().toString(),ex);
}
}
내가 JSON 형식으로 반환 할 SERVERERROR :
public class ServerError {
public final String url;
public final String error;
public ServerError(String url, Exception ex) {
this.url = url;
this.error = ex.getMessage();
}
public String getUrl() {
return url;
}
public String getError() {
return error;
}
}
는 그래서 <xml>hello</xml>
이 잘 반환하지만 true
에 플래그를 설정하면 내가
ERROR 2017-10-18 12:56:53,189 [http-nio-0.0.0.0-8080-exec-2] org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver - Failed to invoke @ExceptionHandler method: eu.openminted.registry.core.exception.ServerError eu.openminted.registry.service.UserController.malformedExeption(javax.servlet.http.HttpServletRequest,java.lang.Exception)
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
를 얻을 수 또한 produces
을 XML과 JSON으로 설정하면 동일한 결과가 반환됩니다.
@RequestMapping(value = "/test",
method = RequestMethod.GET,
produces = {MediaType.APPLICATION_XML_VALUE,MediaType.APPLICATION_JSON_UTF8_VALUE})
, 당신은 당신의 자신의 대답을 사람들 때문에 받아 들여야하는 당신의 질문은 그것이 해결되고 따라서 도움이 될 수 있다는 것을 알게 될 것입니다. – araknoid
@araknoid 내가 받아 들일 수 있기까지 2 일의 대기 기간이 있습니다. – stevengatsios