gpt4 book ai didi

java - Play Framework 2.5 - 在 Controller 中生成 html 代码时使用 "@"(html.apply)

转载 作者:行者123 更新时间:2023-11-29 04:33:50 25 4
gpt4 key购买 nike

在 Controller 中,我们正在创建一个字符串,当页面呈现时,该字符串将被解释为 Html。每当字符串包含以“@”开头的 scala/twirl 代码时,它都会导致页面无法正确呈现它/根本无法呈现。

Controller :

// render method
return ok(Html.apply(testButton()), testForm);

public String testButton() throws SQLException {
result = "<input type='radio' id='@TestForm(\"TestID\").id'
name='@TestForm(\"TestID\").name' value='5' >" + "Test";
return result;
}

Scala.html:

@(buttons: Html)(TestForm: Form[TestForm])

@buttons

它应该是怎样的:

<input type='radio' id='TestID' name='TestID'  value=5  >test

外观:

<input type='radio' id='@TestForm("TestID").id' name='@TestForm("TestID").name'  value='5'  >test

我们还用其他示例对此进行了测试。问题似乎确实出在 @ 上。也许解析器解析了站点一次,将 @button 替换为我们的代码,但之后不解析它。我们还尝试使用不同的方法(@@\@、没有@)转义@,但是它之后总是以纯文本结束。

在另一个 @ 中渲染一个 @ 最简单的方法是什么?

最佳答案

您不能在 Controller 中执行此操作。 @ 在编译时由 Twirl 编译器解析,但您正试图在运行时引入它。它永远不会工作。即使您可以让它工作,也不是一个好主意。它通过将 Controller 代码与表示代码混为一谈,打破了 MVC 范式。

这应该是另一个看起来像这样的 Twirl View :

// I don't know what TestForm is, so this is a guess
// that it exists in the controller and needs to be passed in
@(TestForm: Form)

<input
type='radio'
id='@TestForm("TestID").id'
name='@TestForm("TestID").name' value='5'
>

关于java - Play Framework 2.5 - 在 Controller 中生成 html 代码时使用 "@"(html.apply),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42624313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com