私は他の質問で多くを見回しましたが、私と同じ問題はありません。SpringがコントローラからエラーのためにJSONを返さない
私は従来のアプリケーションをリファクタリングしてSpringを実装しており、Spring 4はweb.xmlを使用してWebSphereで実行しています。
コントローラには@ResponseBodyという注釈が付けられていますが、例外がない場合はJacksonが処理したJSONを返しますが、例外がある場合、応答の本体はJSONではないため、処理できません私のフロントエンドJavascriptでは私はPOSTを必要とすると、エンドポイントでGETを使用する場合
は例えば、私はこのようなJSONを期待:
{
"timestamp": 1486410302434,
"status": 405,
"error": "Method Not Allowed",
"exception": "org.springframework.web.HttpRequestMethodNotSupportedException",
"message": "Request method 'GET' not supported",
"path": "/greeting"
}
しかし、その代わりに、私はこの取得:
Error 405: Request method 'GET' not supported
を例外が発生したときにJSONを返すように環境を設定するにはどうすればよいですか?
@Configuration
@EnableWebMvc
@ComponentScan("hello")
public class WebConfig {
@Bean
public ViewResolver viewResolver() {
UrlBasedViewResolver resolver = new UrlBasedViewResolver();
resolver.setViewClass(org.springframework.web.servlet.view.JstlView.class);
resolver.setPrefix("/Pages");
resolver.setSuffix(".jsp");
return resolver;
}
そして、私のweb.xml:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/dispatcher-config.xml</param-value>
</context-param>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/dispatcher-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>