Предотвратете изхода от моите низове на механизма за шаблони на PlayFramework

Създадох някои помощни програми, които ми помагат при генерирането на HTML и ги споменавам в изгледите си като @div( "class" -> "well" ){ Hello Well. }. Досега тези класове бяха подкласове NodeSeq, защото не се екранират тогава. Но трябва да се отърва от NodeSeq в горната част на моята йерархия на класовете, защото xml на Scala е дефектен и прави кода ми хакерски и защото тогава мога да превключа към Traits.

Затова се опитах да разбера как да попреча на Play да избяга от моите Tag-обекти. Но за съжаление единственото валидно решение, което открих, е да отменя компилатора на шаблона и потребителят да посочи моя компилатор в своите Build.scala настройки.

Но се надявам, че съм пропуснал по-прост подход?


person Taig    schedule 27.08.2013    source източник
comment
Малко не съм сигурен какво имате предвид (примерен код за вашите помощни маркери би помогнал), но първата ми мисъл е, че трябва да използвате @Html("<span>stuff that won't be escaped</span>")? Може ли по-подробно?   -  person Mikesname    schedule 27.08.2013
comment
По същество изграждам персонализиран шаблонен двигател върху двигателя на Play. Следователно обвиването на обажданията ми с @Html не е опция. taig.github.io/Play-Tmpltr   -  person Taig    schedule 27.08.2013


Отговори (2)


Ако вашите html помощници връщат „Html“, а не String, не е необходимо да ги обвивате с помощта на етикета @Html в изгледа.

eg

import play.api.templates.Html

def a(src: String, value: String) : Html = Html(s"<a href='/bg$src'>$value</a>")

Ще бъде извикан в изгледа по-долу, без да е необходимо да се обвива в @Html

@a("www.example.com", "Example")
person Adam    schedule 27.08.2013
comment
Това е добър подход, но за съжаление моят помощник @div е клас, който се изобразява от Play чрез неговия toString метод. - person Taig; 27.08.2013

От версия 2.2.0-M1 се появи нов подход в документите, който обяснява как да добавяте персонализирани формати към машината за шаблони. Това ми позволява лесно да интегрирам своите помощни програми.

Формат на персонализиран шаблон: Java, Scala

person Taig    schedule 28.08.2013
comment
(двата линка са повредени) - person 6infinity8; 02.10.2018