宣言
yieldUnescaped '< !DOCTYPE html>' String str = "javaの型も使える"; html() { body() { p(id:"xx", "hello"); p(id:"yy", str); } }
javaコードみたいにHTMLが書ける
thymeleafなどと干渉しない
注、 このページのタグ表示の不等号の後にスペースがあるのは(< p>< /p>), 雑なエスケープのためで、 実際タグを有効にする場合はスペースを埋めて書く。
yieldUnescaped '< !DOCTYPE html>' String str = "javaの型も使える"; html() { body() { p(id:"xx", "hello"); p(id:"yy", str); } }
include template:"xxx.tpl"; include escaped:"yyy.txt"; //HTML要素を全てエスケープ処理する include unescaped:"zzz.txt"; //HTML要素としてレンダリングする
template:"tplファイル"
escaped:"txtファイル"//html要素をエスケープする
<p>sssss</p> <br> <p>ggggg</p>
unescaped:"txtファイル"//html要素としてレンダリング
sssss
ggggg
if( 条件式 ) { 処理 } else { 処理 }
java: String[] strs = { "xx", "yy" }; tpl: strs.each { val -> p( val ); }
java: mav.attribute("key", "同じ結果"); tpl: p(key + "だよ"); p("${key}だよ");
doctype宣言下では多分どこでも使用できる。 しかし、layout.tplに渡す側のファイルの平場? カッコに囲まれていないような場で書くとエラー。 MAVから渡すもあり。TDQSでゴリ押し
groovy記法がわからない場合もあって、特にpre()のテキストで重宝する。 他に、たとえば< style>タグを使おうとした時 < style scoped="scoped"> div { border: 2px solid rgba(1,1,1,1); } < /style> これをgroovyで、 style(scoped:"scoped") { div{} } と書いたり style(scoped:"scoped", "div{}") と書いたりしてみても うまくいかないのでTDQSで書く。
タグの共食い
javaコードみたいにHTMLが書ける
javaコードみたいにHTMLが書ける だよ
javaコードみたいにHTMLが書けるだよ
javaコードみたいにHTMLが書ける だよ
thymeleafなどと干渉しない
間違えてthis.tplをインクルードすると(自分で自分をインクルード)、ここで無限ループが始まる
template:"tplファイル"
escaped:"txtファイル"//html要素をエスケープする
<p>sssss</p> <br> <p>ggggg</p>
unescaped:"txtファイル"//html要素としてレンダリング
sssss
ggggg
flag: false.
groovy:p(class:"name", item) = html: < p class="name">item< /p>
たぶん公式
https://groovy-lang.org/templating.html#_creation_of_a_template_engine[yieldUnescaped]はdoctype宣言と呼ばれ、他に何種類かある。
html以外にもXMLなども対象
htmlではマークアップしない文字も表示されるが、groovyだとエラーにはならないが表示もされない
li()はセミコロンで区切れば(セミコロン要らないかも)複数入る
ol(){}波括弧内でコンマは使えない。セミコロンは使っても使わなくてもいい
2023,秋現在、groovyの日本語版書籍は見当たらず。Webサイトでも情報が少ないので待ち遠しい
属性名にハイフンがある場合シングルクォートで囲む'stroke-width'