我为Struts2创建了一个新的主题模板。
所以我将以下代码放入我的struts.xml
:
<constant name="struts.ui.theme" value="mynew" />
这个模板目录在哪里,以便我可以将新主题放入其中。我尝试了很多地方,但都没有。
java.io.FileNotFoundException: Template /template/mynew/actionerror.ftl not found.
Struts 2首先会在webroot/template/theme
名称中查找标签的模板。如果它没有在那里找到模板,它将使用默认模板,它是Struts 2核心jar的一部分。您可以在Template Loading中了解有关此功能的更多信息。
可以使用多个不同的规则按以下顺序选择模板目录:
- 特定标签上的
templateDir
属性- 页面范围的属性名为
templateDir
- 请求范围的属性名为
templateDir
- 会话范围的属性名为
templateDir
- 名为templateDir的应用程序范围属性
struts.ui.templateDir
中的struts.properties
属性(默认为模板)
罗曼C答案中将模板放在正确的文件夹中的主要线索是他提到了webroot。我还没有在其他任何地方见过这个。基于此,这是一个有效的例子。
我的项目位于一个EAR文件中,里面看起来像这样:
要使模板工作,顶级WAR文件中应该有一个“模板”(或其他任何配置它)文件夹。在其中,创建一个包含主题名称的文件夹。
由于我的项目是使用Maven构建的,因此我的FTL文件位于my_web_project/src/main/webapp/template_dir_name/theme_name/my_field_template.ftl
中
我希望这对某人有用。我花了一段时间来搞清楚。