【问题标题】:How to set value for field of type list in scala template in play 2.4?如何在 play 2.4 中的 scala 模板中设置类型列表字段的值?
【发布时间】: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 的值,并且每当用户按下提交时,我都会在控制器中绑定这个表单。但在控制器内部我得到的是空值。

【问题讨论】:

    标签: java playframework playframework-2.4 scala-template


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-23
      • 2019-04-15
      相关资源
      最近更新 更多