声明要在@ helper.repeat中使用的变量 - PlayFramework

时间:2016-03-03 02:48:53

标签: scala playframework

我想使用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。

1 个答案:

答案 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="">