Запрос на отдых дает 400 неправильных запросов при использовании Hibernate4Module в Spring 4.0.8.RELEASE + Hibernate 4.3.7.Final + 2.3.0 com.fasterxml.jackson

1

У меня есть контроллер ниже

@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
    Spring выдает 400 когда Джексон не может отобразить между отправленными данными и параметром @RequestBody . Вам, вероятно, нужно сопоставить ваше тело json с реальными объектами, а не с String .
  • 0
    Тогда почему это работает, когда я удаляю конвертеры сообщений
Показать ещё 1 комментарий
Теги:
rest
jackson
spring-4
hibernate-4.x

1 ответ

0

Обход @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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню