Struts 2模板未找到

时间:2012-10-20 08:08:01

标签: java configuration struts2 themes freemarker

我为Struts2创建了一个新的主题模板。

所以我将以下代码放入struts.xml

<constant name="struts.ui.theme" value="mynew" />

这个模板目录在哪里,以便我可以将新主题放入其中。我尝试了很多地方,但都没有。

java.io.FileNotFoundException: Template /template/mynew/actionerror.ftl not found.

2 个答案:

答案 0 :(得分:0)

Struts 2首先会在webroot/template/theme名称中查找标签的模板。如果它没有在那里找到模板,它将使用默认模板,它是Struts 2核心jar的一部分。您可以在Template Loading中了解有关此功能的更多信息。

  

可以使用多个不同的规则选择模板目录,顺序如下:

     
      
  • 特定标记
  • 上的templateDir属性   
  • 名为templateDir
  • 的页面范围属性   
  • 名为templateDir
  • 的请求范围属性   
  • 名为templateDir
  • 的会话范围属性   
  • 名为templateDir
  • 的应用程序范围属性   
  • struts.ui.templateDir中的struts.properties属性(默认为模板)
  •   

答案 1 :(得分:0)

Roman C将模板放置在正确文件夹中的答案的主要线索是,他提到了 webroot 。我在其他任何地方都没有看到。因此基于此,这是一个有效的示例。

我的项目在EAR文件中,该文件看起来像这样:

  • my_project_ejb.jar
  • my_project.war
  • 带有所需jar的lib文件夹

要使模板正常工作,顶层的WAR文件中应该有一个“模板”(或您配置的其他文件)文件夹。在其中创建一个带有主题名称的文件夹。

由于我的项目是使用Maven构建的,因此我的FTL文件位于readProfileData() { this.userService.getProfile() .pipe(first()) .subscribe( userData => { this.profileImage = userData.profileimage; }); if (this.profileImage != null) { this.hideDefaultImage = "true"; } else { this.hideDefaultImage = "false"; } }

我希望这对某人有用。花了我一段时间才弄清楚。