在返回单一model的json的时候。
MappingJacksonJsonView会返回 {model类名:{内容}}
但我这时候是需要{内容}
经过google后发现了这个缺陷。
解决方法:
- package com;
- //https://jira.springsource.org/browse/SPR-6932
- //Support for single value responses using ContentNegotiatingViewResolver
- import java.util.Map;
- import org.springframework.web.servlet.view.json.MappingJacksonJsonView;
- public class CustomMappingJacksonJsonView extends MappingJacksonJsonView {
- @Override
- protected Object filterModel(Map<String, Object> model) {
- Map<?, ?> result = (Map<?, ?>) super.filterModel(model);
- if (result.size() == 1) {
- return result.values().iterator().next();
- } else {
- return result;
- }
- }
- }
- 对应的ContentNegotiatingViewResolver修改如下
<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1" />
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
</map>
</property>
<property name="defaultViews">
<list>
<bean
class="net.zhepu.json.MappingJacksonJsonView" />
</list>
</property>
<property name="ignoreAcceptHeader" value="true" />
</bean>