@Controller public class FreeMarkerController { Map<String ,Object> map = new HashMap<>(); List<Object> list = new ArrayList(); @GetMapping("/freemaker/{id}/{name}") public String demo(@PathVariable("id")String id ,@PathVariable("name") String name,Model model){ map.clear(); map.put("id",id); map.put("name",name); list.add(2); list.add(4); map.put("aa",null); model.addAttribute("map",map); model.addAttribute("list",list); model.addAttribute("date",new Date()); return "index"; } } 这里的demo方法,返回了"index",spring怎么知道是让freemarker去进行模板解析处理?
时间: 2024-04-24 15:21:30 浏览: 89
Spring框架通过配置文件或注解来指定视图解析器,从而告知Spring要使用哪个模板引擎进行模板解析处理。
在这个例子中,如果你想要使用FreeMarker模板引擎,你需要在Spring的配置文件中进行相应的配置,或使用注解的方式进行配置。以下是两种常见的配置方式:
1. 配置文件方式:
在Spring的配置文件中,可以通过以下配置来告诉Spring使用FreeMarker模板引擎进行解析处理:
```xml
<!-- 配置视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="prefix" value="/WEB-INF/views/"/> <!-- 设置模板文件的路径 -->
<property name="suffix" value=".ftl"/> <!-- 设置模板文件的后缀名 -->
<property name="cache" value="true"/> <!-- 是否开启模板缓存 -->
<property name="order" value="1"/> <!-- 设置视图解析器的顺序 -->
</bean>
<!-- 配置FreeMarker模板引擎 -->
<bean id="freeMarkerConfigurer" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/templates/"/> <!-- 设置模板文件的路径 -->
<property name="preferFileSystemAccess" value="false"/> <!-- 是否优先使用文件系统路径 -->
<property name="defaultEncoding" value="UTF-8"/> <!-- 设置默认编码 -->
</bean>
```
2. 注解方式:
在Spring Boot项目中,可以使用`@EnableAutoConfiguration`注解自动配置FreeMarker模板引擎。只需在启动类上添加该注解即可:
```java
@SpringBootApplication
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
```
以上配置完成后,Spring将会自动根据返回的视图名字("index")在配置的模板路径中查找对应的模板文件(如:/WEB-INF/views/index.ftl),并使用FreeMarker模板引擎进行解析处理。最终生成的HTML内容将会返回给客户端。
阅读全文