2014-11-23 39 views
0

我需要将在Jboss 4.2.3上运行良好的“.war”应用程序迁移到更新版本的JBoss。 我选择了“jboss-as-7.1.1.Final”。freemarker div-close.ftl未找到升级到JBoss 7

经过一些小的调整后,我可以加载应用程序,但首次访问登录页面时返回了一个关于文件“div-close.ftl”缺失的freemarker配置错误。 我发现了一个名为“freemarker”的文件夹,里面的模板是“ajax”,“simple”,“xhtml”和“whtml”。 缺少“div-close.ftl”实际上不存在于“xhtml”文件夹(这是默认的ui模板)上,但我认为这在较老的JBoss上工作可能是因为在给定文件时回退到“简单”不存在于特定的和更详细的ui模板文件夹(请纠正我,如果我错了)。

我需要做的唯一依赖项更改是将struts依赖项从2.2.1升级到2.3.1。 接下来,freemarker相关性从版本2.3.16升级到2.3.18。

为了解决问题,我配置了旧版本2.3.16,但没有运气,所以我试图将丢失的文件从“简单”文件夹复制到“xhtml”,并且此问题已停止,但我已得到导航通过应用程序的同一种错误,但抱怨现在在“whtml”文件夹中找不到模板文件。

事情似乎有点搞砸了,我不知道从哪里开始挖掘。这是免费标记问题吗?这是一个支柱问题吗?

有没有人有这个相同的问题,或可以帮助我吗?

回答

0

freemareker.template.Configuration对象中有一个templateLoader JavaBean属性(getTemplateLoader/setTemplateLoader方法对)。 TemplateLoader对象指定如何找到并加载模板。那里肯定有MultiTemplateLoader,它调用其他TemplateLoader -s的列表来实现回退行为。其中一些代表TemplateLoader-s显然已损坏。通常的错误是获取模板目录的文件路径(“真实路径”),然后从中创建一个FileTemplateLoader。问题在于,资源和ServletContext资源和ClassLoader资源都不能保证作为真实文件存在。就我所见,在JBoss AS 7上它们确实不是。即使提取了war,JBoss也不会给你“真正”的文件路径,所以你必须正确地做事。也就是说,只需使用ClassTemplateLoaderWebappTemplateLoader而不是FileTemplateLoader即可。另外,如果你要升级FreeMarker,那么没有理由在2.3.21之前停止(我写这个时是最新的2.3.x版本)。其中,它将错误消息放入了它用于查找模板的东西TemplateLoader。那现在会有帮助。

+0

非常感谢您的详细回复。我第一次尝试使用网站“http://stackoverflow.com/questions/14956396/freemarker-webapptemplateloader-in-freemarkerconfigurer”中找到的说明来替换“TemplateLoader”,并没有奏效。出于某种原因,似乎春天不加载我的自定义bean。我会在接下来的几天再次尝试并尽快在这里发布结果。再次感谢并致以最良好的问候。 – msfbrasil 2014-11-25 11:08:39