0
私のコントローラで定義されたアクションの戻り値の型としてMapのJSON表現を返そうとしています。 Spring - マップからJSONを返します
この
は、メソッドそのものです:@RequestMapping(value = "/executeRetrieve", method = RequestMethod.POST, produces = "application/json; charset=utf-8")
public @ResponseBody Map<String, Object> executeAction() {
Map map = new HashMap();
map.put("message", "hello");
return map;
}
しかし、私はそのアクションを呼び出すとき、私はエラー406を得続ける:へSpringの変換に関連していない問題を意味
HTTP Status 406 - description: The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers.
JSON、そうですか?
UPDATE - これは私のコンテキストのコンフィギュレーションです:
public class ServletInitializer implements WebApplicationInitializer {
public void onStartup(ServletContext container) throws ServletException {
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.register(ServletConfiguration.class);
context.setServletContext(container);
ServletRegistration.Dynamic servlet = container.addServlet("dispatcher", new DispatcherServlet(context));
servlet.setLoadOnStartup(1);
servlet.addMapping("/");
}
}
リクエストヘッダを投稿してください。あなたの 'produce'節は非常に特殊で、通常は必要ありません(Springはあなたのためにコンテンツの交渉を行います)。また、コンテキストをどのように設定していますか? - Spring Boot? – chrylis
@chrylis私の投稿を更新しました。そこに設定を入れました –
メソッドがjsonを生成している場合は、文字列の代わりにマップを返すのはなぜですか?私は、JavaのjsonライブラリのほとんどがMapオブジェクトをJsonObjectに変換し、次にtoStringを –