springmvc+ftl时,修改jar中ftl文件,会造成访问时这个ftl文件节点文件的丢失,求帮助。

发布于 2021-11-28 15:26:01 字数 648 浏览 451 评论 10

@空心大白菜 大神你好,今天又折腾了一天,还是不行:
想知道freemarker怎么去更新cache的,怎么禁用他的cache,或者怎么刷新他的cache应该就能解决我的问题,
把ftl放在jar里,是想做模块化。。团队A开发团队A的项目。 
下面是我的springmvc 和 freemarker结合读取jar里面的ftl的代码,如果不去修改ftl,这个方法是没有问题的,什么都能访问到,如果一旦修改某个ftl文件,就会造成他这个节点下的所有ftl全部丢失,(我看部署的jar里面的ftl是有的) ,其他节点ftl访问正常。。










springmvc.xml

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

醉生梦死 2021-11-29 16:57:47

spring 不是有个视图解析器嘛,就是那个 org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver然后有个viewClass 指向的是 FreeMarkerView,所以我继承了他然后扩展了他

别再吹冷风 2021-11-29 16:57:35

回复
你这个继承有问题啊,taglibFactory是你继承类的私有属性,不是父类里那个。你应该源码拿过来重写一个

回忆凄美了谁 2021-11-29 16:16:37

回复
你的这段代码把父类方法给吃掉了,搞了个新的属性,结果又是private的,根本没地方用到

回眸一笑 2021-11-29 16:02:26

你扩展了FreeMarkerView,然后又重新定义了一个taglibFactory?这个私有的taglibFactory还没有任何引用,你做的初始化动作没有任何意义啊?spring并没有开放taglibFactory,你应该是重写FreeMarkerView这个类而不是继承了。

initServletContext是每次调用都会执行的,所以才有getConfiguration()!=null的判断,然而经过你override之后,再次调用啥都没做,还漏了一段代码,当然找不到资源了

混吃等死 2021-11-29 15:56:42

第一个问题:肯定是更新了,因为我改这个ftl内容,页面也是实时的反映出来了; 第二个问题,要是更新了,那新jar也是生效的。 我反复的测试,还得出了,如果我修改ftl,这个ftl所在节点的文件,如果我访问过了,是不会被清的,还是可以访问,坑爹啊,这是为什么啊,,,求救啊,,,

反目相谮 2021-11-29 15:51:33

回复
好矛盾的话...淡定.重新说下.

心欲静而疯不止 2021-11-29 15:09:50

首先没明白里的问题: 1. freemaker 不更新 class path下的ftl  2.新的jar扔到 class path 不生效

如果是前者 可以看一下 Fremaker 是否可以自定义 Loader

顺便打自己的广告:我的 webit-script  的 Loader 是可以控制缓存 的 非常方便更新,但是 如果问题是第二点 缺省提供的ClasspathLoader也是“无能为力”, 不过 可以 自己定义 JarLoader 不用 ClasspathLoader 这样完全可以自己从Classpath扫描jar,控制 jar 的覆盖顺序,

苍暮颜 2021-11-29 14:38:16

嗯 现在他自己节点下的文件被清掉了,但是他自己却没有问题,和跟他不是同级的节点ftl也没问题,都可以正常访问,我在改这个ftl文件的时候,eclipse勾上了自动编译,实时的把我文件写入的jar包,我现在 只要知道了,如何让freemarker重新去加载那些cache树 就可以了,,目前开发自己功能起来,没有什么问题,但是就怕放任不管,以后会出更多的问题,我老大让我用osgi,那个更深,,,哎。。。。

回忆凄美了谁 2021-11-29 09:42:43

要解决这个问题,要对tomcat等容器的加载有深刻理解,没有几天时间你怕是门都摸不到。

爱的那么颓废 2021-11-29 09:34:09

这个问题我很久之前遇到过,我曾想把一些业务相关的代码搞到jar包里,隐藏起来,后来发现不可行,当然原因很清楚,百分百是加载顺序和对象初始化的问题。但是我那时没能力解决这个问题,到现在也没深究,想起来要解决也不容易。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文