参考サイト:Thymeleafにおける画面レイアウト
上記サイトを参考(というかほぼ丸っとコピー)に、
template.html
index.html
の2つを用意しました。
下記がその内容です。
①template.html
html
1<!DOCTYPE html> 2<!-- /* 全体をlayoutという名前でフラグメント化 */ --> 3<html class="no-js" xmlns:th="http://www.thymeleaf.org" th:fragment="layout(title,body)"> 4<head> 5<meta charset="utf-8"/> 6 7<script type="text/javascript"> 8 9</script> 10<!-- /* 個別画面のtitleタグの内容で置換されます */ --> 11<title th:text="${title}">ここに各ページのタイトル名が入ります</title> 12</head> 13<body> 14 <!--/* 個別画面のbodyタグの内容で置換されます */--> 15 <div id="body" th:text="${body}"></div> 16</body> 17</html>
②index.html
html
1<!--/* layout/template.htmlに、titleタグとbodyタグの中身を渡す */--> 2<html xmlns:th="http://www.thymeleaf.org" 3 th:replace="/layout/template :: layout(title,body)"> 4<head> 5<title>Create Staff Information</title> 6</head> 7<body> 8 <h2>てすとー</h2> 9</body> 10</html>
index.htmlのtitleタグとbodyタグを、
template.htmlのtitleとbodyに反映したいのですが、
レンダリング後のHTMLが下記のようになってしまいます。
★レンダリング後
html
1<html class="no-js"> 2<head> 3<meta charset="utf-8" /> 4 5<script type="text/javascript"> 6 7</script> 8<!-- /* 個別画面のtitleタグの内容で置換されます */ --> 9<title>title</title> 10</head> 11<body> 12 <div id="body">body</div> 13</body> 14</html>
index.htmlの上部に書いている layout(title,body) の書き方が悪いようなんですが、
以下のいずれで試してもダメで、困り果てています。
タグの中身、あるいはタグそのものをtemplate.htmlに反映する方法はありませんでしょうか?
- th:replace="/layout/template :: layout(
{::title},{::body/content()})"
→Could not parse as fragment selection: "/layout/template :: layout({::title},{::body/content()})" (/home/index:3)
上記エラーによりレンダリング自体が出来ず
- th:replace="/layout/template :: layout(
{::title},{::body})"
→Could not parse as fragment selection: "/layout/template :: layout({::title},{::body})" (/home/index:3)
上記エラーによりレンダリング自体が出来ず
- th:replace="/layout/template :: layout(this::title,this::body)"
→Could not parse as fragment selection: "/layout/template :: layout(this::title,this::body)" (/home/index:3)
上記エラーによりレンダリング自体が出来ず
- th:replace="/layout/template :: layout(//title[@class='test'],body)"
→Could not parse as fragment selection: "/layout/template :: layout(//title[@class='test'],body)" (/home/index:3)
上記エラーによりレンダリング自体が出来ず
なお、Thymeleafは2.1系を使用しています。
※3.0系ならいけそうなんですが、諸事情により2.x系しか使っちゃいけなくて・・・トホホ
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。