我有一个正在开发的Spring Boot应用程序,我最近将它从Spring3升级到Spring4(spring-boot-starter-parent 1.3.5.release到1.4.6.release)。
我在src/main/resources/templates
目录中有一个html模板(名为'test-template.html'),我一直在使用Thymeleaf的TemplateEngine创建html电子邮件内容。(在升级到版本4之前,这是正常工作的。)
我目前遇到的问题是,没有在服务器上的WEB-INF中创建“模板”目录(或者在使用Maven构建时在“target”中的相关目录中)。因此,我得到了以下信息:
java.io.FileNotFoundException:无法打开ServletContext资源[/web-inf/templates/test-template.html]
下面是我对Thymeleaf的配置类。(我使用手动配置,因为我只使用Thymeleaf处理电子邮件模板,因此不希望Spring Boot配置Thymeleaf视图解析器。但是,我在自动配置时也会出现同样的错误。)
@Configuration
public class ThymeleafConfig implements ApplicationContextAware {
private static final Logger logger = LoggerFactory.getLogger(ThymeleafConfig.class);
private ApplicationContext applicationContext;
public void setApplicationContext(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine engine = new SpringTemplateEngine();
engine.setEnableSpringELCompiler(true);
engine.setTemplateResolver(templateResolver());
return engine;
}
private ITemplateResolver templateResolver() {
SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
resolver.setApplicationContext(applicationContext);
resolver.setPrefix("/WEB-INF/templates/");
resolver.setSuffix(".html");
resolver.setTemplateMode(TemplateMode.HTML);
return resolver;
}
}
下面是pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>myapp</artifactId>
<version>1.0.10-SNAPSHOT</version>
<packaging>war</packaging>
<name>myapp</name>
<description>blah blah</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<start-class>com.matchingchina.AcumenApplication</start-class>
<thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>
<thymeleaf-layout-dialect.version>2.1.1</thymeleaf-layout-dialect.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-jsp</artifactId>
<version>3.0.5</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.imgscalr</groupId>
<artifactId>imgscalr-lib</artifactId>
<version>4.2</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>com.sendgrid</groupId>
<artifactId>sendgrid-java</artifactId>
<version>3.2.1</version>
</dependency>
<!-- WEBJARS -->
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>3.3.6</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>font-awesome</artifactId>
<version>4.6.1</version>
</dependency>
</dependencies>
</project>
将/web-inf/templates/
更改为classpath:/template/
。在类路径上并不一定意味着在web上下文路径上。
问题内容: 我想将我的JSF 2.0 xhtml文件放在WEB-INF \ jsf下。那我该如何访问它们?我知道WEB- INF中的任何内容都不会暴露给外部,因此我需要一个控制器将我重定向到相应的JSP,对吗?(这也是模型2模式iirc)。 我可以使用web.xml / faces- config.xml中的参数来实现吗?我认为FacesServlet是我的webapp的控制器,因此它应该达到这个
这可能是一个非常基本的问题,但我尝试了各种选择,但都没有成功,因此请求帮助。我想在指定目录中创建一个文件。如果文件已经存在,我想向其添加数据。以下是我尝试的内容: Internet搜索要求使用以下内容: 但是它会在目录内创建空文件,并在目录外创建新文件并附加到它。而且很少有帖子建议不需要使用createNewFile()来创建文件。 我尝试了如下各种路径格式: 但它仍然不会在目录中创建文件。你能告
问题内容: 使用向导从Android Studio创建了一个新的flutter项目。 新创建的项目文件夹在ios目录中没有任何Pods文件夹或podfile。 此Flutter.io页面状态(强调我的): 尽管Flutter项目的iOS文件夹中有一个Podfile,但只有在添加逐平台集成所需的本机依赖项时,才使用此文件。 我的ios目录中根本没有Podfile。 我在另一个问题中发现了此评论,这表
使用向导从Android Studio创建了一个新的flutter项目。 新创建的项目文件夹在ios目录中没有任何Pods文件夹或podfile。 的输出:
null null WEB-INF 类 com... 图像 字体 JS CSS messages_en.properties 为什么maven将所有资源放在classes文件夹下?我的文件夹结构错了吗?