50101


単純な値渡しも何もしないfragment設定ができません。  
layout:fragmentもth:fragmentも両方試してみたのですが何も反応しませんでした。  
コントローラーで表示するのは一番子要素としています。  
なぜでしょうか。。。  
よろしくお願いいたします。

index.html

[code]

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
    <head>
      <title>Index</title>
      <meta name="viewport" content="initial-scale=1.0">
      <meta charset="utf-8">
      <link rel="stylesheet" href="/css/index.css" />
    </head>
    <body>
    
      <div class="main" th:fragment="main">main is here</div>
    
    </body>
    </html>
    
[/code]

main.html

[code]

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" th:decorator="index">
    <head>
      <meta charset="UTF-8" th:remove="all" />
      <link rel="stylesheet" href="/css/main.css" />
    </head>
    <body>
      <div class="main" layout:fragment="main">
        <div class="left" th:fragment="left">left is here</div>
        <div class="right" th:fragment="right">right is here</div>
      </div>
    </body>
    </html>
    
[/code]

map.html(leftに表示したい)

[code]

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" th:decorator="main">
    <head>
      <meta charset="UTF-8" th:remove="all" />
    </head>
    <body>
      <div class="map" th:fragment="left">show map</div>
    </body>
    </html>
    
[/code]

parse_para.html(rightにしたい)

[code]

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" th:decorator="main">
    <head>
      <meta charset="UTF-8" th:remove="all" />
    </head>
    <body>
      <div class="parse" th:fragment="right">show parse_para</div>
    </body>
    </html>
    
[/code]

MainController.java

[code]

    package com.example.rpresult.web;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.servlet.ModelAndView;
    
    @Controller
    public class MainController {
      @RequestMapping(value = "/", method = RequestMethod.GET)
      public ModelAndView index(ModelAndView mav) {
        mav.setViewName("map");
        return mav;
      }
    }
    
[/code]


CC BY-SA 4.0
2018-11-08T06:24:11.893
50083
2018-11-08T13:39:43.303
30195
question
html eclipse spring-boot thymeleaf
thymeleafのfragmentが効かない


`th:fragment`と`layout:fragment`を混在させず、まずはどちらを使うかを決めた方が良さそうですね。

各ページに共通部分を埋め込みたい場合は、共通部分に`th:fragment`を使用します。各ページでは、それを埋め込むための`th:replace`などが必要です。逆に、共通レイアウトに各ページの固有部分を埋め込みたい場合は、`layout:fragment`を使用します。各ページでは、`layout:decorate`で共通レイアウトを指定する必要があります。

後者は、`pom.xml`や`build.gradle`に`thymeleaf-layout-dialect`の依存関係も追加する必要があります。

[このページ](https://qiita.com/opengl-8080/items/eb3bf3b5301bae398cc2#%E3%83%95%E3%83%A9%E3%82%B0%E3%83%A1%E3%83%B3%E3%83%88%E3%82%92%E5%9F%8B%E3%82%81%E8%BE%BC%E3%82%80)が、日本語でとてもわかり易くまとまっているので、参考になると思います。


CC BY-SA 4.0
2018-11-08T13:09:05.720
50101
2018-11-08T13:39:43.303
2018-11-08T13:39:43.303
21092
21092
50083
answer