将JSON发布到Spring MVC Controller返回400错误请求 - java

我想发布JSON并让Jackson将其转换为POJO,但是现在我什至无法发布简单的String参数。

我正在使用Jackson 2.3.2(jackson-core和jackson-databaind)
我正在使用Spring 3.2.8.RELEASE(spring-context,spring-webmvc)
我的控制器如下所示:

@RequestMapping(value="add-name", method=RequestMethod.POST, headers = "Accept=application/json")
public String addName(@RequestParam(value = "name", required = false) String name) {
    LOG.info(String.format("name: %s", name));
    return "name";
}

我用以下数据发布到该控制器:

{ "name" : "my_name" }

我收到的回复是400 Bad Request

注意:我要通过jQuery.post()提交POST,但要删除它作为变量,我也要通过FF Poster add-on提交POST,并指定URL,内容类型(application / json)和上述数据。

编辑:我认为问题可能是甚至没有调用Jackson库。我从依赖项中删除了它,没有任何变化,没有不同的错误/异常,我仍然只是得到一个400 Bad Request响应。

编辑2:即使我完全删除了addName的参数并发布了空的正文{},我仍然会得到400 Bad Request

参考方案

您将原始数据发布到主体中,但是控制器正在寻找名为name的参数。使用值为name的参数my_name进行发布,或者在处理程序中使用@RequestBody传递JSON对象。

Spring MVC:如何获取请求的处理程序方法 - java

我正在尝试根据Spring @RequestMapping注释方法上存在的注释实现一些逻辑。因此,我的方法中有一个HttpServletRequest实例,我想问一下spring“给我一个方法,该方法将被调用以处理此请求”,因此我可以使用反射API来询问是否存在我的注释,因此我可以更改处理。有什么简单的方法可以从Spring MVC获取此信息? java大神…

Spring MVC Controller测试,并模拟许多类 - java

我们的系统中有许多Controller,还有许多Spring Data存储库。我想为通过我的MVC上下文运行的控制器编写测试。但是,必须手动模拟系统中的每个服务和存储库似乎很麻烦,而且不合适,因此我可以测试控制器例如FooControllerTest.java@RunWith(SpringJUnit4ClassRunner.class) @WebAppCon…

Spring如何为Maven项目创建基本URL - java

我正在使用Eclipse,并且正在学习Spring MVC / Rest / Security。我从头开始创建了一个Maven项目,但是由于某种未知的原因,它拒绝连接到数据库。然后,我使用了某个地方的示例项目,但基本上将其中的每个文件替换为新项目的文件。出于某些奇迹,即使确实与第一个相同,它也能正常工作。但是我确实有一个问题:每当我尝试运行该项目时,在“在服…

Spring Data Cassandra的事务管理 - java

我正在使用Spring和Cassandra作为基础数据库。曾提到过弹簧伞项目“ spring data cassandra”。与休眠不同,在这里无法找到如何管理事务。如果您中的某些人已经合并,请共享要包含的事务管理器的详细信息。 参考方案 Cassandra不支持传统(ACID)的事务。在某些特殊情况下,可以通过一些构造来实现事务原子性,例如原子批处理(请参…

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…