72686


下記のコードについて質問があります。  
`${}`で `{}` の中身を参照していると思うのですが、`"${}"` のように `" "` がつくと文字列にならないのでしょうか？

[code]

    <th:block th:if="${#en.enLoop('tag.able')}">
    
[/code]


CC BY-SA 4.0
2020-12-16T03:39:01.087
72682
2020-12-16T05:11:00.973
2020-12-16T04:59:46.890
3060
35696
question
java spring thymeleaf
${} を "" で囲っても文字列にはならない？


ご質問のコードはJSPのEL式と言います。

結論から言いますと`${...}`が解釈される場所と、それ以外のHTMLタグが解釈される場所が違うため文字列と混同されることはありません。

JSPはtomcatなどのサーバで最初に読み込まれた時にコンパイルされ、実行可能なクラスファイルになります。その後、該当するページがリクエストされた際に、`${...}`の部分の結果が出力され置き換わったものがレスポンスとして送り出されます。ですので、ブラウザなどで表示する際には`${...}`の部分はなくなっており、結果が出力された状態で届きますので、ダブルクォートで囲まれていようが文字列の"${...}”にはならない、ということです。


CC BY-SA 4.0
2020-12-16T04:46:20.287
72685
2020-12-16T04:46:20.287
9515
72682
answer


Thymeleafは、HTMLテンプレートに記載された`th:`から始まるタグや属性を変換の対象と判断し、属性値（`"`で囲まれた部分）を解析して、ユーザーのブラウザーで表示可能なHTMLに変換します。

[code]

    <th:block th:if="${#en.enLoop('tag.able')}">
    
[/code]

の1行はブラウザーでは解析できません（Thymeleafしか解析できません）。属性値を`"`で囲むのはThymeleafのマークアップ（書式）のルールです。


CC BY-SA 4.0
2020-12-16T05:04:23.483
72686
2020-12-16T05:11:00.973
2020-12-16T05:11:00.973
21092
21092
72682
answer