如何在play 2.4中的scala模板中设置类型列表字段的值?

时间:2016-03-26 00:31:11

标签: java playframework playframework-2.4 scala-template

我从包含类型列表字段的控制器传递表单变量。如何在列表的特定索引处设置用户输入的值。以下是我的代码:

@Data
public class TestForm {
    public List<TestInfo> testInfo = new ArrayList<TestInfo>();
    public static class TestInfo {
        public String testName;
        public long testId;
    }
}

public Result testRoute() {
        Form<TestForm> form = Form.form(TestForm.class);
        return ok(test.render(form));
    }

    public Result postRoute() {
        Form<TestForm> form = Form.form(TestForm.class).bindFromRequest();
        TestForm tf = form.get();
        System.out.println(tf.testInfo); // getting empty list
        return ok(tf.testInfo.get(0).testName);
    }
}
@(tests : Form[views.forms.school.TestForm])
@import helper._
<html>
<body>
<form action="@routes.CustomController.postRoute" method="Post">
<input type="text" name=tests("testInfo")(0).testName value="1"/>
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>

这里我有一个包含TestInfo类型列表的TestForm。 TestInfo包含两个字段testName和testId。我正在将TestForm类型的Form传递给scala模板,并且我想根据用户输入的值设置testName和testId的值,并且每当用户按提交时我都会在控制器中绑定此表单。但在控制器内部,我得到了空值。

1 个答案:

答案 0 :(得分:0)

我认为您想在视图中使用repeat helper。代码将类似于下面(虽然我知道我还没有实际测试过这个)

@helper.form(routes.CustomController.postRoute()) {
    @helper.repeat(tests("testInfo"), min = 1) { infoItem =>
        @helper.inputText(infoItem.testName)
        @helper.inputText(infoItem.testId)
    }
}