2017-06-30 2 views
0

J'ai une exigence dans laquelle le consommateur REST enverra les données de date dans les paramètres régionaux du client ou du client. L'en-tête HTTP sera configuré pour envoyer les informations sur les paramètres régionaux du client.JsonSerializer et JsonDeserializer utilisant les en-têtes HTTP

La mise en œuvre du serveur REST doit traiter l'en-tête Http et convertir la date de l'environnement local du client au format UTC et stocker la date dans la base de données.

De même, lorsque vous renvoyez la réponse lorsqu'il existe un champ de date, l'opération inverse est attendue. Cela permettra au consommateur de voir la même date qui a été entrée par le client.

Je veux savoir comment je peux accéder à l'objet HTTPRequest OU passer des paramètres personnalisés à mes JSONSerializer et JSONDeserializer implémentés.

Répondre

0

Je pense que vous pouvez utiliser la variable ThreadLocal pour enregistrer les informations de ServletRequest et ensuite l'utiliser n'importe où. Par exemple:

Dans votre filtre pour obtenir les informations dont vous avez besoin dans la demande

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

Utilisez la variable ThreadLocal dans votre JSONSerializer

@Override 
public void serialize(String resourceIdMsg, 
         JsonGenerator jsonGenerator, 
         SerializerProvider serializerProvider) 
      throws IOException { 
    String date = YourFilter.getDate().get(); 
}