我很难在@RequestBody注释方法参数中将String转换为ENUM。参数中的Map以某种方式具有字符串的值,即使该值是Enum类型。如何自动将String转换为正确的类型?
枚举
public enum Fruit{
ORANGE,
APPLE,
PEAR
}
请求:
{"123":"ORANGE", "456":"APPLE"}
控制器
@RequestMapping(value="/updateFruit", method = RequestMethod.POST)
public void updateFruit(@RequestBody Map<String, Fruit> fruitMap){
// Fruit comes in as a String. So the map is a Map<String, String>
// do stuff....
}
答案 0 :(得分:0)
我建议您升级到Spring 3.2+,它可以实现您想要的Jackson 2库开箱即用(您还需要导入该依赖项)。
如果不能,您可以创建自定义类
class FruitMap extends HashMap<String, Fruit> {} // or some other Map implementation
并将其用作参数类型
public void updateFruit(@RequestBody FruitMap fruitMap){
不要忘记在请求中设置content-type
标头。