응답 클래스를 만듭니다 대체 솔루션 (스프링 3.1과 함께 작동)은 덜 침략적입니다.
귀하의 봄 설정에서
는 :
<bean id="jacksonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="mypackage.MyMessageConverter"
p:delegate-ref="jacksonConverter">
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
아이디어는 자신의 HttpMessageConverter를 제공하는 것입니다 제공된 잭슨 변환기에 위임한다.
public class MyMessageConverter implements HttpMessageConverter<Object> {
// setters and delegating overrides ommitted for brevity
@Override
public void write(Object t, MediaType contentType, HttpOutputMessage outputMessage) throws IOException,
HttpMessageNotWritableException {
// t is whatever your @ResponseBody annotated methods return
MyPojoWrapper response = new MyPojoWrapper(t);
delegate.write(response, contentType, outputMessage);
}
}
이렇게하면 모든 pojos가 사용자가 제공하는 다른 json으로 포장됩니다.
예외의 경우 ericacm에서 제안한 해결 방법은 @ResponseBody를 사용하여 'BadStatus'반환 유형에 주석을다는 가장 간단한 방법입니다.
경고 : json으로 serialize 된 BadStatus도 MyMessageConverter를 거치므로 재정의 된 'write'메소드에서 객체 유형을 테스트하거나 MyPojoWrapper가 처리하도록해야합니다.
아마도 관련 : http://stackoverflow.com/questions/6014784/serialize-specific-exceptions-with-spring-mvc – Bozho