【问题标题】:Struts 2 Template not found未找到 Struts 2 模板
【发布时间】:2012-10-10 19:04:54
【问题描述】:
我为 Struts 2 创建了一个新的主题模板。
所以我将以下代码放入我的struts.xml:
<constant name="struts.ui.theme" value="mynew" />
这个模板目录在哪里,我可以把新的主题放进去。我尝试了很多地方,但没有一个有效。
java.io.FileNotFoundException: Template /template/mynew/actionerror.ftl not found.
【问题讨论】:
标签:
java
configuration
struts2
themes
freemarker
【解决方案1】:
Struts 2 会首先在webroot/template/theme 名称中查找标签的模板。如果在那里没有找到模板,它将使用作为 Struts 2 核心 jar 一部分的默认模板。您可以在Template Loading 中了解有关此功能的更多信息。
可以使用几种不同的规则来选择模板目录,顺序如下:
- 特定标签上的
templateDir 属性
- 名为
templateDir 的页面范围属性
- 名为
templateDir 的请求范围属性
- 名为
templateDir 的会话范围属性
- 名为 templateDir 的应用程序范围属性
-
struts.properties 中的 struts.ui.templateDir 属性(默认为模板)
【解决方案2】:
Roman C 关于将模板放置在正确文件夹中的答案的主要线索是他提到了 webroot。我在其他地方没见过这个。因此,基于此,这是一个工作示例。
我的项目在一个 EAR 文件中,里面看起来像这样:
- my_project_ejb.jar
- my_project.war
- 带有所需 jar 的 lib 文件夹
要使模板正常工作,您的 WAR 文件的顶层应该有一个“模板”(或您配置的任何其他内容)文件夹。在其中,使用您的主题名称创建一个文件夹。
由于我的项目是使用 Maven 构建的,因此我的 FTL 文件位于 my_web_project/src/main/webapp/template_dir_name/theme_name/my_field_template.ftl
我希望这对某人有用。我花了一段时间才弄明白。