Wie übergebe ich einen Parameter an JsonSerializer?

Ich habe einen einfachen Datendienst:

@GET
public Data getData(@QueryParam("id") Long id) {
  Data data = dataService.getData(id);
  return data;
}

Und ein MatchingDataSerializer das implementiertJsonSerializer<Data> : DasDataSerializer ist bei Jackson registriert über:

simpleModule.addSerializer(Data.class , dataSerializer);
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(simpleModule);

Es funktioniert gut. Aber heute möchte ich noch einen hinzufügenLocale parameter und hoffe dasDataSerializer Korrespondenzinhalt ausgeben:

@GET
public Data getData(@QueryParam("id") Long id , @QueryParam("locale") Locale locale)

Das 'Data'selbst enthält verschiedene Variationen des Gebietsschemas, und ich hoffe, e die zugewiesene Ausgabe des Gebietsschemas zu erhalten.

Aber wenn ich das bekommelocale Aus dem Parameter, ich weiß nicht, wie man das übergibtlocale Wert auf dieDataSerializer

Gibt es sowieso, um dies zu erreichen?

Mit Ausnahme dieser Lösung:

Data data = dataService.getData(id.get() , locale);

das ist nicht was ich will.

Es scheintThreadLocal ist der einzige Weg, dies zu erreichen, aber ich finde das hässlich. Andere mögliche Lösungen?

Vielen Dank.

Umgebungen: dropwizard-0.7.0-rc2, jackson-core: jar: 2.3.1

==================== aktualisiert ==========

Antwort an @ andrei-i:

Weil meine Daten selbst bereits verschiedene Gebietsschemaversionen enthalten. beispielsweise :

Data helloData = dataService.get("hello");
helloData.getName(Locale.English) == "Hello";
helloData.getName(Locale.France) == "Bonjour";
helloData.getName(Locale.Germany) == "Hallo";

Ich möchte das Gebietsschema direkt von der URL an JsonSerializer übergeben, um eine Version der Datenpräsentation zu erhalten.

Und es kann auch eine andere Version (nicht nur das Gebietsschema) geben, sodass das Erben des Gebietsschemas für das Mischen von Daten nicht berücksichtigt wird.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage