現在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