现在Thyemleaf 3.0.5正在使用Jackson,有什么方法可以将com.google.gson.ExclusionStrategy添加到组合中吗?有没有什么办法可以将ExclusionStrategy添加到Thymeleaf 3.0.5中?
也与此有关:
Thymeleaf inline javascript ignore null
UPDATE:
使用Metroids建议的答案,我能得到这个工作。 我首先必须从我的XML配置文件切换到使用java配置文件来配置Thymeleaf。然后我可以像Metroid所示的那样访问StandardDialect。我实现了IStandardJavaScriptSerializer接口重写#serializeValue(Object对象,Writer作家)。
IStandardJavaScriptSerializer实施片断......
@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的配置片段...
@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;
}
谢谢!这是我需要的95%。我不得不从使用XML配置切换到使用java配置,然后我能够基本上做到你在这里。我最终建立了自己的IStandardJavaScriptSerializer,在我对这个问题的更新中看到了代码。 再次感谢,非常感谢您的帮助。 – kasdega