У меня есть общий шаблон в play 2.6
, который я хочу передать в переменной сумме HtmlContent
s. Я определил template
как это (в том числе неявного параметра у меня есть в случае, когда меняется что-нибудь):Scala Play template vararg HtmlContent
@(foo: String)(content: Html*)(implicit bar: Bar)
На стороне шаблона, это работает fine-- я могу рассекать content
с for
и делают это, как я хотеть. Тем не менее, я не смог найти чистый способ для вызова аргументов переменной из базового шаблона.
например, у меня есть представление под названием «Баз»:
@(something: String)(implicit bar: Bar)
В ней я пытаюсь вызвать template
с несколькими аргументами Html. Я попробовал следующее:
@template("fooString"){{123},{abc}}
and
@template("fooString")({123}, {abc})
and
@template("fooString"){{123}, {abc}})
И другие различные перестановки, но внутри объемлющего кронштейна, кажется, интерпретировать все буквально как один параметр в HtmlContent
vararg.
Однако, это в конечном итоге работает, как я предполагал, проходя в нескольких HtmlContents
:
@template("fooString")(Html("123"), Html("abc"))
Так что работает, и я могу использовать тройную кавычку интерполированной строку для большого Html block-- но мне кажется например, должен быть более чистый способ сделать это, и интерполяция строк опасна, поскольку она не выполняет html-экранирование.
Есть ли способ сделать это, используя синтаксис {
? Я хотел бы узнать больше, что на самом деле происходит на базовом уровне, и как играть, анализирует и генерирует HtmlContent в скобках.
Ваш 'Html (...) 'подход выглядит довольно чистым и явным для меня. Исходный код [Twirl] (https://github.com/playframework/twirl) может быть одним местом, чтобы попытаться разобраться в вашем вопросе. – wwkudu
Любые комментарии к ответу, который я написал? –