我想使用helper.repeat来创建几个输入元素。但我想将输入标记声明为html而不是使用@helper.input方法。但要做到这一点,我必须在这个循环中使用@index。我无法实例化并增加此变量。我试过类似下面的代码,但我的输出显示在html页面中: BaseScalaTemplate(play.twirl.api.HtmlFormat$@5a8a0ced)= {0} 以html输出。
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
@index = {0}
@helper.repeat(questionForm("answer.alternatives"), min = 7) { (alternative) =>
<div class="checkbox">
<input type="checkbox" value="@alternative("correct") ">
<input type="text" id="answer_alternatives_(@index)_text" name="answer.alternatives[@index].text" value="">
</div>
}
</div>
</div>
还有另一种可能更干净的方式来做我想要的吗?也许用@for?
我在Java8中使用playframework 2.4.6。
答案 0 :(得分:1)
Playframework可以让你做你需要的,但你必须以另一种方式去做。
1)您的表单定义将有一个Seq[String]
来保存来自模板的结果。
2)您的表单定义需要包含此更改。在你的情况下:
"answer_alternatives" -> seq(nonEmptyText)
3)将模板中的名称和ID更改为@{alternative.name}
,以便Playframework可以将输入文本链接到String序列。
<input type="text" id="@{alternative.name}" name="@{alternative.name}" value="">