2017-06-30 9 views
0

RESTコンシューマーがクライアントまたはコンシューマーのロケールの日付データを送信する要件があります。 HTTPヘッダーは、クライアントロケール情報を送信するように設定されます。HTTPヘッダーを使用するJsonSerializerおよびJsonDeserializer

RESTサーバーの実装では、Httpヘッダーを処理し、クライアントのロケールの日付をUTC形式に変換し、日付をデータベースに格納する必要があります。

同様に、日付フィールドがあるときに応答を返すときは、逆の操作が必要です。これは、消費者がクライアントによって入力されたのと同じ日付を確実に見るようにする。

私はHTTPRequestオブジェクトにどのようにアクセスできるか、または実装されたJSONSerializerとJSONDeserializerにカスタムパラメータを渡すことができます。

答えて

0

私は、ThreadLocal変数を使用してServletRequestの情報を保存し、どこでも使用できると思います。例:あなたは

public class YourFilter implements Filter { 

    private static final ThreadLocal<String> _date = new ThreadLocal<>(); 

    public static ThreadLocal<String> getDate() { 
     return _date; 
    } 

    @Override 
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
      throws IOException, ServletException { 
     //.... 
     //other code 
     //get the date from request 
     Date date = request.xxxxxx(); 
     //set the date to the local thread variable 
     _date.set(date); 
    } 
} 

があなたのJSONSerializer

@Override 
public void serialize(String resourceIdMsg, 
         JsonGenerator jsonGenerator, 
         SerializerProvider serializerProvider) 
      throws IOException { 
    String date = YourFilter.getDate().get(); 
} 
をにThreadLocal変数を使用して、要求に必要な情報を得るためにあなたのフィルタでは

関連する問題