我正在尝试使用 JSON 将表单从 Ext JS 4 提交到 Spring 3 控制器。我正在使用 Jackson 1.9.8 进行序列化/反序列化,使用 Spring 的内置 Jackson JSON 支持。
我在新记录的域对象中有一个状态字段最初为空。提交表单时,它会生成以下 json(缩小到几个字段)
{"id":0,"name":"someName","status":""}
提交后在服务器日志中看到以下内容
"nested exception is org.codehaus.jackson.map.JsonMappingException: Can not construct instance of com.blah.domain.StatusEnum from String value '': value not one of the declared Enum instance names"
因此,杰克逊似乎期望一个有效的枚举值或根本没有值,包括一个空字符串。无论是在 Ext JS、Jackson 还是 Spring 中,我该如何解决这个问题?
我试图创建自己的 ObjectMapper,例如
public class MyObjectMapper extends Object Mapper {
public MyObjectMapper() {
configure(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
}
}
并将其作为属性发送给 MappingJacksonMappingView 但这不起作用。我也尝试将它发送到 MappingJacksonHttpMessageConverter 但这没有用。附带问题:我应该在自己的 ObjectMapper 中发送哪个?
建议?