Maven-SSM整合Thymeleaf模板引擎 Spring5整合(JavaConfig注解配置)

1. 依赖

在配置好SSM框架后,在pom.xml中添加如下依赖

<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-spring5</artifactId>
    <version>3.0.9.RELEASE</version></dependency>

2. 配置文件

webConfig.java中中加入如下配置,如果配置了jsp或者freemarker请注释掉jsp的viewResolver或freemarker的配置

@Configuration
@EnableWebMvc
@ComponentScan({"com.example.controller", "com.example.api"})
public class WebConfig implements WebMvcConfigurer {   
    /**
     * 模板解析
     * @return
     */
    @Bean
    public SpringResourceTemplateResolver templateResolver() {
        SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
        templateResolver.setPrefix(TEMPLATE_PREFIX);
        templateResolver.setSuffix(TEMPLATE_SUFFIX);
        templateResolver.setCacheable(TEMPLATE_CACHEABLE);
        templateResolver.setCharacterEncoding(CHARACTER_ENCODING);
        templateResolver.setTemplateMode(TEMPLATE_MODE);
        templateResolver.setOrder(TEMPLATE_ORDER);        return templateResolver;
    }    /**
     * 模板引擎
     *
     * @return
     */
    @Bean
    public SpringTemplateEngine springTemplateEngine(SpringResourceTemplateResolver templateResolver) {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(templateResolver);        return templateEngine;
    }    /**
     * 视图解析器
     *
     * @return
     */
    @Bean
    public ThymeleafViewResolver viewResolver(SpringTemplateEngine springTemplateEngine) {
        ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
        viewResolver.setTemplateEngine(springTemplateEngine);
        viewResolver.setCharacterEncoding(CHARACTER_ENCODING);    
        return viewResolver;
    }//.......其他配置请自行配置}

由于我使用了CONSTANTS类里面的static变量,所以附上Constants类相关的参数

    public final static String CHARACTER_ENCODING = "UTF-8";   
    /**
     * thymeleaf模板引擎参数
     */
    public final static String TEMPLATE_PREFIX = "/WEB-INF/templates/";   
    public final static String TEMPLATE_SUFFIX = ".html"; 
    public final static Boolean TEMPLATE_CACHEABLE = false; 
    public final static String TEMPLATE_MODE = "HTML5";   
    public final static Integer TEMPLATE_ORDER = 1;

此配置需要注意以下几点:

  • templateResolver的prefix与suffix对应你的视图层的文件位置

  • templateResolver的characterEncoding和viewResolver的都要设置成UTF-8中文才不会乱码。

  • templateResolver的cacheable一定要在开发的时候设置成false不然无法看到实时的页面数据

3. 测试

  • controller:

    在ModelMap里面随便设置一点值

    @RequestMapping("/test")
    public String test(ModelMap map) {
        map.put("thText", "设置文本内容");
        map.put("thUText", "设置文本内容");
        map.put("thValue", "设置当前元素的value值");
        map.put("thEach", Arrays.asList("列表", "遍历列表"));
        map.put("thIf", "msg is not null");
        map.put("thObject", new UserEntity("sadfa","asfasfd","asfsaf","asdfasf","saf","asfd","sadf",1));      
        return "test";
    }
  • test.html

    <!DOCTYPE html>
    <html lang="cn" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <h1>TEST</h1>
    <h2>Thymeleaf</h2>
    <!--th:text 设置当前元素的文本内容,常用,优先级不高-->
    <p th:text="${thText}" /><p th:utext="${thUText}" />
    <!--th:value 设置当前元素的value值,常用,优先级仅比th:text高-->
    <input type="text" th:value="${thValue}" />
    <!--th:each 遍历列表,常用,优先级很高,仅此于代码块的插入-->
    <!--th:each 修饰在div上,则div层重复出现,若只想p标签遍历,则修饰在p标签上-->
    <div th:each="message : ${thEach}"> <!-- 遍历整个div-p,不推荐-->
        <p th:text="${message}" /></div><div> <!--只遍历p,推荐使用-->
        <p th:text="${message}" th:each="message : ${thEach}" /></div><!--th:if 条件判断,类似的有th:switch,th:case,优先级仅次于th:each, 其中#strings是变量表达式的内置方法--><p th:text="${thIf}" th:if="${not #strings.isEmpty(thIf)}"></p><!--th:insert 把代码块插入当前div中,优先级最高,类似的有th:replace,th:include,~{} :代码块表达式 --><div th:insert="~{grammar/common::thCommon}"></div><!--th:object 声明变量,和*{} 一起使用--><div th:object="${thObject}">
        <p>ID: <span th:text="*{id}" /></p><!--th:text="${thObject.id}"-->
        <p>TH: <span th:text="*{username}" /></p><!--${thObject.thName}-->
        <p>DE: <span th:text="*{password}" /></p><!--${thObject.desc}--></div></body></html>

几点注意:

  • 在html首标签里面加上xmlns

    <html lang="cn" xmlns:th="http://www.thymeleaf.org">
  • 同样把head的meta设置一个charset=“UTF-8”

至此,你就可以去配置tomcat运行项目了。


注:转载
作者:罗蜀黍ilss
链接:https://www.jianshu.com/p/e26caf10e6b6


作者:慕哥9229398
链接:http://www.imooc.com/article/256715
来源:慕课网

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值