2016-04-19 4 views
0

以前はspring mvc 3を使用して作成されたコントローラクラスを持っていましたが、何らかの理由でSpringバージョンを4.1.4に更新することにしました。 この変更の後、このコントローラーは以前と同じように動作しなくなりました... 前のバージョンでは以下のコードがこのように戻ってきました:departmentList:{....}このdepartmentListは最初のものですが、今はちょうどシンプルな配列:[{...}、{...}]Spring MVC 4はデフォルトでjsonルートオブジェクトを生成していません

new ModelAndView().addObject(departmentList); 

設定はxmlです。

<bean id="cnManager" 
    class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"> 
    <property name="favorPathExtension" value="true"/> 
    <property name="ignoreAcceptHeader" value="true" /> 
    <property name="defaultContentType" value="application/json" /> 
    <property name="useJaf" value="true"/> 
    <property name="mediaTypes"> 
     <map> 
      <entry key="html" value="text/html" /> 
      <entry key="json" value="application/json" /> 
      <entry key="xml" value="application/xml" /> 
     </map> 
    </property> 
</bean> 

<bean id="jacksonObjectMapper" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" 
     p:targetMethod="disable"> 
    <property name="targetObject"> 
     <bean class="com.fasterxml.jackson.databind.ObjectMapper"/> 
    </property> 
    <property name="arguments"> 
     <list> 
      <util:constant static-field="com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES"/> 
     </list> 
    </property> 
</bean>  

<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" 
     p:supportedMediaTypes="application/json" 
     p:objectMapper-ref="jacksonObjectMapper"/>   

<bean id="mappingJacksonJsonView" class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" 
     p:extractValueFromSingleKeyModel="true" 
     p:objectMapper-ref="jacksonObjectMapper"/> 

<!-- 
    View resolver that delegates to other view resolvers based on the content type 
--> 
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> 
    <!-- All configuration is now done by the manager - since Spring V3.2 --> 
    <property name="contentNegotiationManager" ref="cnManager"/> 
    <property name="defaultViews"> 
     <list>     
      <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" p:extractValueFromSingleKeyModel="true" 
       p:objectMapper-ref="jacksonObjectMapper"/> 
     </list> 
    </property> 
    <property name="viewResolvers"> 
     <list> 
      <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/> 
      <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
       <property name="prefix" value="/WEB-INF/jsp/"/> 
       <property name="suffix" value=".jsp"/> 
      </bean> 
     </list> 
    </property> 
</bean> 

答えて

0

私はこの問題を解決しました。 私はこのようなことに私のdefaultViewsを変更するために必要な:なしコードの変更に期待通り今では動作します

<property name="defaultViews"> 
     <list>     
      <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" /> 
     </list> 
    </property> 

関連する問題