6

Thymeleafをjsマイクロテンプレートルーチンと組み合わせて使用​​しているため、属性値に特殊文字が含まれています。Thymeleafを実行する場合

<a style="display:<%= x ? 'block' : 'none' %>;">

それは作成します

<a style="display:&lt;%= x ? &#39;block&#39; : &#39;none&#39; %&gt;;">

プロセッサに入れたものとまったく同じになると思いますが。HTML属性値で特殊文字を使用するにはどうすればよいですか?どうもありがとう!

4

5 に答える 5

11

で遊んでみる

th:utext="#{unescaped text}"> 

Thymeleaf docエスケープされていないテキストを参照してください

于 2016-02-16T20:41:15.393 に答える
1

確認するいくつかのバリアントがあります。

  • 上記のようLEGACYHTML5にオプションを使用しますtemplateResolver
  • templateUnderscore.js のオーバーライドメソッド

私は2番目のアプローチを好みます。次のコードを初期化スクリプトに配置します。

var original = _.template;
_.template = function(content) {
    // fix operators escaped by Thymeleaf HTML5 validator
    content = content.replace(/&#39;/g, "'");
    content = content.replace(/&lt;/g, "<");
    content = content.replace(/&gt;/g, ">");
    return original.call(this, content);
};
于 2015-04-19T14:04:30.667 に答える
0

他のテンプレートモードについてはわかりませんが、html5 と xml ではこれができないことはわかっています。これは、タイムリーフが生成するドキュメントが doctype に対して検証されないためです。したがって、少なくともこれらのモードでは、これは不可能だと思います。(たぶん、カスタム方言で?)

では、なぜ同じページで 2 つのテンプレート ツールを使用したいのでしょうか?

于 2013-07-30T22:50:45.370 に答える
0

コードを CDATA ブロックで囲むことができます。

http://www.w3schools.com/xml/xml_cdata.asp

于 2013-05-21T12:51:01.637 に答える
0

Hubbardr が既に提案したように、LEGACYHTML5 をテンプレート モードとして使用すると、ここで役立つ場合があります。

于 2013-08-14T13:23:26.143 に答える