2014-11-03 37 views
9

我最近将项目从Spring 3迁移到Spring 4.1.1。我也将杰克逊从版本1迁移到版本2.3.0。将Spring从3.2迁移到4.1.1:使用JSON序列化出现问题

现在,使用与无效响应控制器,当我遇到问题

@RequestMapping(value="toto", method="POST") 
public @ResponseBody void myController() { 
//content 
} 

在运行时,调用它时,我得到这种形式的例外:

Failed to evaluate serialization for type [void]: java.lang.IllegalStateException: Failed to instantiate standard serializer (of type com.fasterxml.jackson.databind.ser.std.NullSerializer): Class com.fasterxml.jackson.databind.ser.BasicSerializerFactory can not access a member of class com.fasterxml.jackson.databind.ser.std.NullSerializer with modifiers "private" 

我不知道是否有人遇到同样的问题的种类或者有什么错误的想法。

在此先感谢。

回答

14

如果你想使用你需要@ResponseStatus(value = HttpStatus.OK)注释的方法返回void类型:

@RequestMapping(value = "/usage") 
@ResponseStatus(value = HttpStatus.OK) 
public void doSomething(HttpServletRequest request, ... 

详见What to return if Spring MVC controller method doesn't return value?

+0

真好!那就是我错过的。 – 2016-07-28 20:13:57

1

当Spring正在等待使用HttpMessageConverters进行序列化的返回值时,您的方法未返回任何内容。你还是有这样的事情:

@RequestMapping(value="toto", method="POST") 
@ResponseBody 
public FooBar myController() { 
    // 
    return fooBar; 
} 
相关问题