Как передать параметр в 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, чтобы получить одну версию представления данных.
И может быть «другая» версия (не только локаль), поэтому наследование локали смешивания данных не рассматривается.