3

我正在尝试使用 JSON 有效负载通过 ajax POST 发送对象;这个对象引用了存储在数据库中的其他对象,由 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;
    }

}

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

谢谢

4

1 回答 1

6

您可以尝试以下方法

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder

                .getRequestAttributes()).getRequest();
于 2012-07-06T19:49:54.390 回答