Arhn - архитектура программирования

Доступ к объекту HttpServletRequest из настраиваемого десериализатора Jackson

Я пытаюсь отправить объект через ajax POST, используя полезную нагрузку JSON; этот объект имеет ссылки на другие объекты, хранящиеся в базе данных, обрабатываемой Hibernate; Мне нужно получить доступ к этой базе данных, чтобы разрешить ссылки на другие объекты и сохранить их в новом объекте, полученном десериализацией полезной нагрузки JSON запроса.

Теперь мне нужно получить доступ к атрибуту HttpServletRequest, чтобы получить сохраненный сеанс гибернации, который будет использоваться для доступа к базе данных. Является ли это возможным?

Контроллер, обрабатывающий запрос, следующий:

@RequestMapping(value = "/newproduct", method = RequestMethod.POST)
public @ResponseBody
Integer newProduct(HttpServletRequest request, @RequestBody Product product)
{
    //Controller code here
}

Десериализатор, в котором я должен иметь возможность получить атрибут запроса "hibernate_session", является настраиваемым десериализатором, зарегистрированным в Джексоне, и является следующим:

public class ProductDeserializer extends JsonDeserializer<Product>
{

    @Override
    public Product deserialize(JsonParser jpar, DeserializationContext arg1)
        throws IOException, JsonProcessingException
    {

            Product newProduct = new Product();
            // I want to get request attribute or open a new hibernate session here 
            return newProduct;
    }

}

Если нужно, при необходимости выложу еще код.

Спасибо


  • На какой серверный компонент отправляется сообщение ajax? Это сервлет или что-то еще? 06.07.2012
  • Да, это сервлет. Сообщение Ajax направлено на метод, отображаемый Spring, а параметр аннотируется аннотацией @RequestBody. В этом параметре будет десериализован отправленный json. Я размещаю пример в вопросе прямо сейчас. 06.07.2012
  • Некоторые вещи работают, я проверю все, что мне нужно сделать, и дам вам знать .. Если хотите, можете заполнить ответ решением 1 из stackoverflow.com/a/1795931/41977 Сейчас проверю, все ли работает. Спасибо 06.07.2012

Ответы:


1

Вы можете попробовать следующий подход

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder

                .getRequestAttributes()).getRequest();
06.07.2012
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..