У меня есть этот шаблон Play, dynamicLink.scala.html ...Play рамка шаблон не может избежать URL
@(urlWithQuotes: Html, id: Html, toClick: Html)
@uniqueId_With_Quotes() = {
Html("\"" + (@id) + "_" + scala.util.Random.nextInt.toString + "\"")
}
@defining(uniqueId_With_Quotes()) { uniqueID =>
<a [email protected] class="dynamicLink" [email protected]> @toClick </a>
<script><!--Do stuff with dynamic link using jQuery--></script>
}
Это создает особую связь с некоторым JavaScript. Оказываю эту ссылку, как так ...
@dynamicLink(
Html("@{routes.Controller.action()}"),
Html("MyID"),
Html("Click Me")
)
Когда я сделать это, я получаю ...
<a id=
Html("\"" + (MyID) + "_" + scala.util.Random.nextInt.toString + "\"")
class="dynamicLink" [email protected]{routes.Controler.action()}> Click Me </a>
Это не то, что я хочу сделать. Я хочу это сделать ...
<a id="MyID_31734697" class="dynamicLink" href="/path/to/controller/action"> Click Me </a>
Как сделать этот HTML-код корректным?
* Возьмите # 2 - замена Html Params с Последовательностью *
@(urlWithQuotes: String, id: String, toClickOn: String)
@uniqueId_With_Quotes() = {
Html("\"" + (@id) + "_" + scala.util.Random.nextInt.toString + "\"")
}
@defining(uniqueId_With_Quotes) { uniqueID =>
<a [email protected] class="dynamicLink" [email protected]> @toClickOn </a>
...
}
С ...
@dynamicLink2(
"@{routes.Controller.action()}",
"MyID",
"Click Me"
)
Оказывает ...
<a id=
Html("\"" + (MyID) + "_" + scala.util.Random.nextInt.toString + "\"")
class="dynamicLink" [email protected]{routes.Controller.action()}> Click Me </a>
<script>
...
</script>
* Изменение Html для строки не работает *
* Обратите внимание, что "@uniqueId_With_Quotes()" расширяется в "Html (" \ "" + (MyID) + "_" + scala.util.Random.nextInt.toString + "\" ") ". Я хочу, чтобы он фактически выполнял конкатенацию строк. *
Кроме того, это должно быть очевидно, но я хочу, чтобы каждая ссылка и сопровождающий jquery отображались с идентификатором, который является уникальным для этой ссылки, и я не хочу, чтобы диспетчеру приходилось беспокоиться о назначении этих уникальных идентификаторы. Мой способ сделать это заключается в добавлении случайного числа к каждому идентификатору (хотя для представления может быть лучше). Мне нужно, чтобы это поведение с состоянием в представлении, потому что мне нужно, чтобы «dynamicLink» был полностью прозрачным для контроллера.
Изменение Html на String не сработало. Кроме того, я не знаю, когда я должен использовать Html, и когда я должен использовать String (вне пользовательских форм, которые всегда должны использовать String только для защиты от повторной инъекции) –