フレームワーク-ThymeleafテンプレートエンジンSpring5統合Thymeleaf(XML構成と注釈の設定)

1.依存性

構成されたSSMフレームの後、中のpom.xml以下の依存関係を追加

<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-spring5</artifactId>
    <version>3.0.9.RELEASE</version>
</dependency>
复制代码

2. [設定

  • プロフィールやり方Sping_mvc.xml以下の設定を追加し、コメントアウトJSP viewResolver構成やFreeMarkerの
<bean id="templateResolver"
      class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
    <property name="prefix" value="/WEB-INF/templates/"/>
    <property name="suffix" value=".html"/>
    <property name="characterEncoding" value="UTF-8"/>
    <property name="order" value="1"/>
    <property name="templateMode" value="HTML5"/>
    <property name="cacheable" value="false"/>
</bean>

<bean id="templateEngine"
      class="org.thymeleaf.spring5.SpringTemplateEngine">
    <property name="templateResolver" ref="templateResolver"/>
</bean>

<bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
    <property name="templateEngine" ref="templateEngine"/>
    <property name="characterEncoding" value="UTF-8"/>
</bean>
复制代码
  • 配置された注釈webConfig.javaがされている構成やJSP JSPは、設定をコメントアウトFreeMarkerの場合、構成に追加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;
    }
//.......其他配置请自行配置
}
复制代码

私は静的変数内の定数クラスを使用するので、定数クラス関連のパラメータを添付しているので

    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ファイルの場所
  • characterEncodingとtemplateResolverのviewResolverはUTF-8中国人が文字化けしませんに設定する必要があります。
  • キャッシュ可能なのtemplateResolverは、リアルタイムの開発にfalseに設定しなければならないか、またはページのデータを見ることができません

3.テスト

  • コントローラ:

    ただ、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">
    复制代码
  • 同じの頭は、メタ文字セット=「UTF-8」を提供しています

この時点で、あなたは、Tomcatの設定プロジェクトを実行できるようになります。

  • 2018年10月9日午後04時10分46秒に掲載された記事

私について

  • 杭州、通常の学部読み取り、コンピュータ科学と技術的専門知識、卒業20年、練習段階に現在ある座標。
  • 主にJava開発を行って、Golang、シェルについて書きます。この方向に行う準備ができマイクロサービス、興味ビッグデータ、。
  • 狂った兄が学習され、新人の段階では、あなたの首長は、スプレーを点灯し、現在です。
  • 私はあなたと交換アヒルを歓迎します!

おすすめ

転載: juejin.im/post/5d445b126fb9a06ae61a9a2f