Как передать параметр в JsonSerializer?

У меня есть простой сервис данных:

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

И соответствующийDataSerializer который реализуетJsonSerializer<Data> :DataSerializer зарегистрирован в Джексон через:

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

Это работает хорошо. Но сегодня я хочу добавить ещеLocale параметр, и надеюсь, чтоDataSerializer вывести соответствующее содержание:

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

'Data'сам содержит различные варианты локали, и я надеюсь получить назначенный вывод локали.

Но когда я получуlocale из параметра, я не знаю, как передатьlocale значение дляDataSerializer

Есть ли способ добиться этого?

Кроме этого решения:

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

что не то, что я хочу.

Похоже на тоThreadLocal это единственный способ добиться этого, но я чувствую, что это некрасиво. Есть ли другие возможные решения?

Благодарю.

Среды: dropwizard-0.7.0-rc2, jackson-core: jar: 2.3.1

===================== обновлено ==========

ответить на @ andrei-i:

Потому что мои данные уже содержат различные версии локали. например :

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

Я хочу напрямую передать локаль из URL в JsonSerializer, чтобы получить одну версию представления данных.

И может быть «другая» версия (не только локаль), поэтому наследование локали смешивания данных не рассматривается.

Ответы на вопрос(2)

Ваш ответ на вопрос