json - 从 Jackson 自定义解串器访问 HttpServletRequest 对象

标签 json spring hibernate servlets jackson

我正在尝试使用 JSON 负载通过 ajax POST 发送对象;该对象引用存储在数据库中的其他对象,由 Hibernate 处理;我需要访问此数据库以解析其他对象引用并将它们存储在通过反序列化请求的 JSON 负载获得的新对象中。

现在,我必须访问 HttpServletRequest 属性才能获取保存的 hibernate session 以用于访问数据库。可能吗?

处理请求的 Controller 如下:

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

我必须能够获取请求属性“hibernate_session”的反序列化器是一个自定义反序列化器,已注册到 Jackson,如下所示:

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;
    }

}

如有必要,我会发布更多代码。

谢谢

最佳答案

您可以尝试以下方法

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder

                .getRequestAttributes()).getRequest();

关于json - 从 Jackson 自定义解串器访问 HttpServletRequest 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11368374/

相关文章:

javascript - 使用 Javascript 获取 PHP 数据并将其分配给数组

javascript - 'IJsonHelper' 不包含 'Encode' 的定义

Spring 3 MVC Controller 集成测试 - 将 Principal 注入(inject)方法

java - Hibernate继承,多态保存

java - 使用 Hibernate Query.list() 避免类型安全警告

java - 在 json 输出中获取对象时遇到问题

java - Spring 3.2 Properties 文件读取动态属性名称(不是自动注入(inject))

spring - 无法让QueryDsl/APT生成Q类

hibernate 最佳做法: Avoiding Many-To-Many and 'exotic' relationships

c# - 如何从 json 字符串中获取对象列表 c# Newtonsoft.json