0

Я использую LightAdmin 1.1.0.Snapshot с Spring Boot. Я использую Joda DateTime для представления времени с зоной.LightAdmin - Настроить синтаксический анализ DateTime с часовым поясом приложения

Я вижу, что LightAdmin фиксирует дату-время в UTC и контекст десериализации по умолчанию, используемый для анализа данных, - по UTC в LightAdmin. Из отладки я вижу, что LightAdmin использует собственные ObjectMapper и MessageConverters, используя LightAdminRestMvcConfiguration, поэтому он не использует глобальные переопределения Spring Boot для настройки Jackson2ObjectMapperBuilder, как показано ниже.

@Bean 
public Jackson2ObjectMapperBuilder jacksonBuilder() { 
    Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder(); 
    builder.timeZone(coreProperties.appTimeZone()); 
    return builder; 
} 

Любая помощь о том, как 1) настройки переопределения для Джексона в LightAdmin для разбора с приложением по умолчанию часовой пояс или 2) Ручка JSon сериализации/конвертер вне LightAdmin, чтобы решить эту проблему по-разному. Любая помощь была бы потрясающей.

Спасибо, Alex

ответ

0

Один из способов я решил эту проблему, чтобы перенастроить LightAdmin бобы после контекст загружается с помощью ниже.

@Component 
public class AppContextListener implements ApplicationListener<ContextRefreshedEvent>{ 

    @Inject 
    CoreProperties coreProperties; 

    @Override 
    public void onApplicationEvent(ContextRefreshedEvent event) { 

     GenericWebApplicationContext appContext = getRootApplicationContext(event); 
     WebApplicationContext lightAdminWebContext = getWebApplicationContext(appContext.getServletContext(), LightAdminWebApplicationInitializer.SERVLET_CONTEXT_ATTRIBUTE_NAME); 
     lightAdminWebContext.getBeansOfType(ObjectMapper.class).values().stream() 
        .forEach(objectMapper -> objectMapper.setTimeZone(coreProperties.appTimeZone())); 
    } 

    private GenericWebApplicationContext getRootApplicationContext(ContextRefreshedEvent event) { 
     return (GenericWebApplicationContext) (event.getApplicationContext().getParent() != null ? event.getApplicationContext().getParent() : event.getApplicationContext()); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^