【发布时间】:2017-09-24 03:03:47
【问题描述】:
既然 Thyemleaf 3.0.5 正在使用 Jackson,有没有办法将 com.google.gson.ExclusionStrategy 之类的东西添加到组合中?
也与此有关:
Thymeleaf inline javascript ignore null
更新:
使用 Metroids 建议的答案,我能够让它工作。 我首先必须从我的 XML 配置文件切换到使用 java 配置文件来配置 Thymeleaf。然后我能够访问标准方言,如 Metroids 所示。我实现了 IStandardJavaScriptSerializer 接口,覆盖了#serializeValue(Object object, Writer writer)。
IStandardJavaScriptSerializer 实现 sn-p...
@Override
public void serializeValue(Object object, Writer writer) {
try {
ExclusionStrategy exclusionStrategy = new MyApiJsonExcludeExclusionStrategy();
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.setExclusionStrategies(exclusionStrategy);
Gson gson = gsonBuilder.create();
writer.write(gson.toJson(object));
} catch (IOException e) {
throw new TemplateProcessingException("An exception was raised while trying to serialize object to JavaScript using Gson", e);
}
}
Thymeleaf Java Config sn-p...
@Bean
public TemplateEngine templateEngine() {
SpringTemplateEngine engine = new SpringTemplateEngine();
engine.setEnableSpringELCompiler(true);
Set<IDialect> dialects = engine.getDialects();
StandardDialect dialect = (StandardDialect) dialects.stream()
.filter(d -> d instanceof StandardDialect)
.findFirst()
.get();
dialect.setJavaScriptSerializer(new MyThymeleafJavascriptSerializer());
engine.setTemplateResolvers(getTemplateResolvers());
engine.setAdditionalDialects(getAdditionalDialects());
return engine;
}
【问题讨论】: