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

Posted

技术标签:

【中文标题】如何在 play 2.4 中的 scala 模板中设置类型列表字段的值?【英文标题】:How to set value for field of type list in scala template in play 2.4? 【发布时间】:2016-03-26 00:31:10 【问题描述】:

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

@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 类型的表单传递给 scala 模板,我想根据用户输入的值设置 testName 和 testId 的值,并且每当用户按下提交时,我都会在控制器中绑定这个表单。但在控制器内部我得到的是空值。

【问题讨论】:

【参考方案1】:

我认为您想在您的视图中使用repeat helper。代码如下所示(尽管请注意我还没有实际测试过)

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

【讨论】:

以上是关于如何在 play 2.4 中的 scala 模板中设置类型列表字段的值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 play framework(scala) 2.4 中获取当前会话或请求对象?

在 i18n Play 2.4 Scala 模板中设置隐式语言

在 Play 2.4 scala 中禁用单个测试

在 Play Framework 2.4 中为 Scala 实现 Akka

在 Scala Play 框架 2.4 中使用两个资产目录

在 Play2 Scala 模板中声明变量