2016-06-29 13 views
1

thymeleafにhtmlエンティティを解決させるにはどうすればよいですか?Thymeleafはhtmlエンティティを解決しません

私は次があります。

<input th:name="title" th:value="Wayne&rsquo;s World" /> 

は単に"Wayne&rsquo;s World"の代わり"Wayne's world"で入力要素を生成します。

thymeleafでHTMLエンティティを解決する方法はありますか?

答えて

1

2つの選択肢があります。

最初に。 htmlエンティティはまったく使用しないでください。 \を使用して特殊記号をエスケープするだけです。

<input th:name="title" th:value="'Wayne\'s World'" /> 

第二:あなたは、単一引用符で文字列値を指定していることを、注意してください。使用Thymeleafのstring utility脱出のxml enitites用:

<input th:name="title" th:value="${#strings.escapeXml('Wayne&rsquo;s World')}" /> 

あなたの文字列値は、コントローラから来ている、__${}__前処理式を使用しないでください。それは必要ではありません。 Thymeleafの標準変数式${}を使用してください。そして、この式を一重引用符で囲まないでください。であるとして、あなたはどんなエスケープせず、コントローラに文字列値を追加することができます。この場合

<th:block th:include="row::row(attrs='value=${title}, minLength=\'.{1, 16}\', required=true, ... /> 

::次の例では${title}変数を見てください

public String method(ModelMap model){ 
    ... 
    mode.addAttribute("title", "Wayne's world"); 
    ... 
} 
+0

残念ながら、HTMLのエンティティの必要性が例ところです以下に示すタイトルの引用があります。 {1:16} \ '、必須= true、タイトル= {1:16} \'、 引用符(つまり 'Wayne '\ s World')をエスケープすると、明白な理由で解析例外が発生します。 htmlエンティティ(つまり、 'Wayne ’ s World')を使用するには、単純に評価なしで印刷し、'#strings.escapeXml'でエスケープするのと同じ理由で前と同じ構文解析例外がスローされます。 – 000

+0

@ 000それは明らかではありません。コントローラから '$ {title} 'を得ることを意味しますか? –

+0

はい、 '$ {title}'がコントローラから来ています – 000

関連する問題