Spring MVC控制器忽略“消耗”属性

时间:2014-08-11 08:41:18

标签: java json spring spring-mvc jackson

我有控制器:

@RestController
@RequestMapping(value = "/v1/mail", consumes = {APPLICATION_JSON_VALUE})
@ResponseStatus(OK)
public class MailController {

    private CoreOutRestAdapter coreAdapter;

    @Autowired
    public MailController(CoreOutRestAdapter coreAdapter) {
        this.coreAdapter = coreAdapter;
    }

    @RequestMapping(method = POST)
    public void sendMail(@RequestBody @Validated Mail mail) {
        coreAdapter.sendMail(mail);
    }

}

和jackson-databind 2.3.2在classpath中。但是如果我使用Content-Type:application / json发送POST请求,则返回的响应包含415状态(Unsupported Media Type)。我不明白为什么控制器忽略@RequestMapping注释中的“消耗”属性。我怎样才能解决这个问题?此外,您可以在github https://github.com/f1xmAn/scail

找到项目的其余部分

2 个答案:

答案 0 :(得分:0)

以下是我的应用程序代码中的工作示例。

import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/abc")
public class ABC {


    @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public String getRequest(@RequestBody XYZ xyz) {

        return "success";
   }

答案 1 :(得分:0)

我忘了用@EnableWebMvc注释配置。注释后控制器工作正常。