У меня есть контроллер ниже
@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
}
Обход @RequestBody String json
: - Я заменяю @RequestBody String json
на фактический объект, который соответствует String 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 String json
400
когда Джексон не может отобразить между отправленными данными и параметром@RequestBody
. Вам, вероятно, нужно сопоставить ваше тело json с реальными объектами, а не сString
.