@RequestMapping("/strTest")
public Object strTest() {
return "jiang";
}
@RequestMapping("/test")
public Object test() {
return System.currentTimeMillis();
}
如上兩個接口迄薄,返回string類型的接口在會報ClassCastException :Object cannot be cast to java.lang.String 的錯誤
@ControllerAdvice
public class ResultHandle implements ResponseBodyAdvice<Object> {
private static final Logger LOGGER = LoggerFactory.getLogger(ResultHandle.class);
@Override
public boolean supports(MethodParameter methodParameter,
Class<? extends HttpMessageConverter<?>> aClass) {
LOGGER.info("methodName = ", methodParameter.getMethod().getName());
return true;
}
@Nullable
@Override
public Object beforeBodyWrite(@Nullable Object o, MethodParameter methodParameter,
MediaType mediaType,
Class<? extends HttpMessageConverter<?>> aClass,
ServerHttpRequest serverHttpRequest,
ServerHttpResponse serverHttpResponse) {
String requestId = CommonUtils.getRequestId();
return ViewWrapResult.createSuccess(requestId, o);
}
}
谷歌搜索后搜到如下結(jié)果考婴,https://stackoverflow.com/questions/44121648/controlleradvice-responsebodyadvice-failed-to-enclose-a-string-response
但是WebMvcConfigurerAdapter
已經(jīng)被標注@Deprecated
,看注釋更改為如下代碼诚纸,親測有效,我使用的是FastJson津畸,但是仍然是使用MappingJackson2HttpMessageConverter
,親測有效伺通,但是不是非常清楚報錯的原因,請大神指教
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(0, new MappingJackson2HttpMessageConverter());
}
}