我正在尝试使用 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/