5

コントローラから渡したタイトルのリストを渡しました。

@titles:List[String]

次の後に{mmm}が表示されるhtml見出しの生成を繰り返したいと思います。

@titles.map { title =>
  <h1>{title} {mmm}</h1>
}

mmmという変数を見つけようとするため、明らかに問題があります。角かっこをエスケープするにはどうすればよいですか?

または、リストのマッピングを伴わないHTMLを生成するためのより慣用的な方法はありますか?これは非常に新しいです!

4

4 に答える 4

4

Playで中括弧をエスケープする必要はありません。ScalaのXMLリテラルとは異なり、Playテンプレートでは、の後を除いて特別な意味はありません@

次のように書くことができるはずです。

@titles.map { title =>
  <h1>@{title} {mmm}</h1>
}

そして<h1>Whatever Title {mmm}</hq>、などを取得します。

于 2012-07-19T17:01:35.700 に答える
3

トラビスの答えは(あなたが求めた)1つの可能性を示しており、それは正しいです。一方、他のケースにも対応でき、他のトリックを覚えておく必要があります。

たとえば、これは失敗します:

@for(title <- titles){
    Title: @title {mmm} <br/>
}

しかし、これは機能します(Travisに感謝します)

@for(title <- titles) { 
    Title: @{title} {mmm} <br/> 
}

そしてこれもうまくいくでしょう

@for(title <- titles){
    Title: @title - <b>something else without bracets</b> <br/>
}

または、モデルでサンプルメソッドを作成しtoBrackets()、テンプレートで呼び出すこともできます(Javaサンプル)

public String toBrackets(String string) {
    return "{" + string + "}";
}

テンプレート内:

@for(title <- titles){
    Title: @title @title.toBrackets("mmm") <br/>
}
于 2012-07-19T17:53:38.417 に答える
3

それがJSまたは他のコードの一部ではなく、ビューに表示するためだけに使用される場合は、HTMLエンタイトルメントを使用できます

&#123; for left curly brace
&#125; for right curly brace

結果:

{ for left curly brace
} for right curly brace
于 2014-11-11T13:56:15.370 に答える
1

変数@LeftBracket={および@RightBracket=を作成する}と、次のように機能するはずです。

@titles.map { title =>
  <h1>{title} @{LeftBracket}mmm@RightBracket</h1>
}

あなたの質問にいくらか関連するサイドノート:

私の印象では、角かっこが一致しない限り(つまり、}それぞれに対して{)、
テンプレートのコンパイルは失敗するので、おそらく@RightBracket単一を挿入する唯一の方法}ですか?これは、次のように書く必要がある場合に役立ちます。

@titles.map { title =>
   hello :-}
}

:-}

于 2012-10-10T08:29:48.373 に答える