1

このような非常に単純なSpring 3 ReST Webサービスがあります

@RequestMapping(method = RequestMethod.POST, value = "/user")
public @ResponseBody
UserDTO saveUser(@RequestBody UserDTO userDTO)
{
    // Functionality removed as it is not needed for this example
    return userDTO;
}

この Web サービスはうまく機能します。ただし、「キャッチオール」@ExceptionHandler を追加したときに、奇妙な問題に気付きました。この POST 呼び出しでは、正しく返されますが、バックグラウンドでどこかで例外がスローされているようです。したがって、コードを追加すると:

@ExceptionHandler(Exception.class)
public ModelAndView handleRemainingExceptions(Exception ex)
{
    logger.error("Unhandled exception", ex);
    return new ModelAndView("error");
}

突然このエラーが発生します:

07.06.2011 22:54:05 ERROR-ImportController: [Unhandled exception]:
Cannot extract parameter (UserDTO userDTO): no Content-Type found]
org.springframework.web.HttpMediaTypeNotSupportedException: Cannot extract parameter (UserDTO userDTO): no Content-Type found
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.readWithMessageConverters(HandlerMethodInvoker.java:620)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveRequestBody(HandlerMethodInvoker.java:597)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:346)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.__invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:619)

ここで何が起こっているか知っている人はいますか?

4

1 に答える 1

-1

例外は、リクエストに Content-Type ヘッダーが含まれていないため、メソッド パラメーター UserDTO を作成するために使用する MessageConverter を Spring が認識していないことを訴えているようです。

于 2011-07-05T16:28:28.903 に答える