Spring 3 MVC中的自定义ObjectMapper和NamingStrategy
我使用Spring MVC 3和MappingJacksonHttpMessageConverter来获取带有@ResponseBody的json数据。 默认配置工作正常,但现在我需要将camelCase字段转换为Pascal外壳。 为此,我开发了一个自定义命名策略:
UpperCaseNamingStrategy.java
public class UpperCaseNamingStrategy extends PropertyNamingStrategy {
@Override
public String nameForField(MapperConfig config, AnnotatedField field, String defaultName){
return convert(defaultName);
}
@Override
public String nameForGetterMethod(MapperConfig config, AnnotatedMethod method, String defaultName){
return convert(defaultName);
}
@Override
public String nameForSetterMethod(MapperConfig config, AnnotatedMethod method, String defaultName){
return convert(defaultName);
}
public String convert(String defaultName){
char[] arr= defaultName.toCharArray();
if(arr.length != 0){
if(Character.isLowerCase(arr[0])){
arr[0] = Character.toUpperCase(arr[0]);
}
}
return new StringBuilder().append(arr).toString();
}
}
我将自定义策略设置为objectMapper,并在转换器中设置objectMapper。 这些是豆类:
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="objectMapper" ref="jacksonObjectMapper" />
</bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jacksonMessageConverter"/>
</list>
</property>
</bean>
<bean id="jacksonObjectMapper" class="org.codehaus.jackson.map.ObjectMapper">
<property name="propertyNamingStrategy" ref="namingStrategy"/>
</bean>
<bean id="namingStrategy" class="es.unican.meteo.util.UpperCaseNamingStrategy"></bean>
这些bean被正确注册,因为我可以在日志中看到它,但是当我请求json数据时,行为是相同的,并且不会调用转换器方法。 我需要更多配置吗?
与我在项目中做的相比,建议进行以下更改:
运气最好!
链接地址: http://www.djcxy.com/p/48813.html