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 に答える