2015-03-25 24 views
1

我有以下控制器REST請求給予400錯誤的請求時Hibernate4Module春4.0.8.RELEASE + Hibernate中使用4.3.7.Final + 2.3.0 com.fasterxml.jackson

@RequestMapping(value = "/getOptimizeLoggerByCP/{cpId}", method = RequestMethod.POST) 
    public @ResponseBody DataTablesResponse<MessageLogger> getOptimizeLoggerByCP(HttpServletRequest request, @PathVariable String cpId,@RequestBody String json) { 
     } 
} 

我也寫下面的消息轉換器沒有加載冬眠懶惰對象

<mvc:annotation-driven> 
     <mvc:message-converters> 
      <bean 
       class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> 
       <property name="objectMapper"> 
        <bean class="com.gridscape.ocppserver.dao.impl.HibernateAwareObjectMapper" /> 
       </property> 
      </bean> 
     </mvc:message-converters> 
    </mvc:annotation-driven> 

public class HibernateAwareObjectMapper extends ObjectMapper { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

    public HibernateAwareObjectMapper() { 
     Hibernate4Module hm = new Hibernate4Module(); 
     registerModule(hm); 
    } 
} 

當我從applicationContext.xml中刪除消息轉換器,控制器的工作原理,但是當我添加消息轉換器,控制器停止工作,當我請求控制器我得到了400個不好的要求。我打電話給下面的細節客戶

url:- getOptimizeLoggerByCP/REE001 
method:- POST 
Content-Type:- application/json 
Body:-{ 
    "start": 1, 
    "length": 1, 
    "draw": 1 
} 
+0

春天問題當jackson無法在提交的數據和'@ RequestBody'參數之間進行映射時,會生成'400'。您可能需要將您的json主體映射到實際對象而不是「String」。 – beerbajay 2015-03-25 12:19:07

+0

那麼爲什麼它在我刪除消息轉換器時起作用 – Mahesh 2015-03-25 12:29:49

+1

可能是因爲hibernate模塊不想從具有3個字段的對象創建字符串。測試映射到與您正在發送的數據實際相符的類。 – beerbajay 2015-03-25 13:11:54

回答

0

解決方法: - 我更換@RequestBody String json到對應於字符串實際對象的JSON即@RequestBody DataTablesRequest<MessageLogger> dataTableRequest

@RequestMapping(value = "/getOptimizeLoggerByCP/{cpId}", method = RequestMethod.POST) 
     public @ResponseBody DataTablesResponse<MessageLogger> getOptimizeLoggerByCP(HttpServletRequest request, @PathVariable String cpId,@RequestBody DataTablesRequest<MessageLogger> dataTableRequest) { 
     } 

但我仍然需要找出如何使用@RequestBody JSON字符串