gpt4 book ai didi

java - 如何在运行时更改Web项目中的freemarker文件?

转载 作者:行者123 更新时间:2023-12-02 06:42:18 25 4
gpt4 key购买 nike

我在我的网络项目中使用嵌入式 jetty、osgi。

我想在运行时更改 Web 项目中 freemarker 文件中的代码。实现它的最佳方式是什么?

致以诚挚的问候。

最佳答案

假设模板将在Web应用程序的控制下进行替换,当您知道模板已被替换时,您可以对其调用Configuration.removeTemplateFromCache,这样就可以保证接下来 Configuration.getTemplate 将返回新文件。这也意味着您不必在生产服务器上设置较低的 template_update_delay

更棘手的问题是,在替换文件时,FreeMarker 是否会意外看到部分替换或完全锁定(无法打开)的文件。在开发过程中你并不关心,因为它的机会几乎为零,但在生产服务器上你会关心。这取决于 TemplateLoader 实现,然后是其背后的存储。就像如果它有数据库支持一样,肯定不存在这样的风险。对于 File-s,我猜可能会出现这样的故障。不幸的是,您无法在替换模板时强制 FreeMarker 将模板保留在模板缓存中。但您可以在 TemplateLoader 级别实现非常类似的目标。您可以创建一个自定义 TemplateLoader ,您可以告诉它类似 myTemplateLoader.mirrorToMemory(fileName) 的内容,然后替换该文件,然后调用 myTemplateLoader.releaseMirrorOf(文件名)。然后,正如我之前所说,模板缓存条目无效。

关于java - 如何在运行时更改Web项目中的freemarker文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19026297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com