Play framework 2.4 表单填写不起作用

Posted

技术标签:

【中文标题】Play framework 2.4 表单填写不起作用【英文标题】:Play framework 2.4 form fill does not work 【发布时间】:2015-11-12 22:36:54 【问题描述】:

在 Play Framework 2.4 Java 中,我需要使用以下代码填写表单,但它不起作用。 usereditform.field("email").value() 的输出值为空。有人知道为什么吗?

SignupClz signupobj = new SignupClz();
signupobj.email="abcd@efgh.com";
signupobj.name="abcd";
signupobj.password = "eoijf";

Form<SignupClz> usereditform = Form.form(SignupClz.class).fill(signupobj);
System.out.println(usereditform.field("email").value());

【问题讨论】:

【参考方案1】:

这段代码是正确的。请查看其他点 - 也许您没有识别控制台中的“abcd@efgh.com”输出。

例如,我有类似的代码,它可以工作:

EditForm rawEditForm = new EditForm();
rawEditForm.title = boxModel.title;
rawEditForm.body = boxModel.body;
rawEditForm.id = id;

Form<EditForm>  editForm = Form.form(EditForm.class).fill(rawEditForm);
Logger.info("Title: " + editForm.field("title").value());

【讨论】:

【参考方案2】:

我正在学习 PlayFramework,偶然发现了这个问题。

对于PlayFramework 2.8,不能直接访问表单字段值,无论是读取还是填充(写入)信息。您必须在构建表单时明确告诉它,如下所示:

 @Inject
 FormFactory formFactory;

 Form<SignupClz> usereditform = FormFactory.form(SignupClz.class) // 
                                .withDirectFieldAccess(true)
                                .fill(signupobj);

 System.out.println(usereditform.field("email").value());

请注意,在此版本中,表单是使用 FormFactory 构建的,请确保将其注入或将其添加到您的代码中。

官方文档https://www.playframework.com/documentation/2.8.x/JavaForms#Defining-a-form:~:text=Instead%20of%20enabling%20%E2%80%9Cdirect%20field%20access%E2%80%9D%20for%20all%20forms%2C%20you%20can%20enable%20it%20only%20for%20specific%20ones%3A中的详细信息

【讨论】:

以上是关于Play framework 2.4 表单填写不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Play Framework 2.4 授权

Play Framework 2.4 全局对象迁移

在 Play Framework 2.4 中为 Scala 实现 CORS

Play Framework 2.4 - 注入的字段始终为空

从 Play Framework 更改 WS API! 2.4 至 2.5

在 Play Framework 2.4 中为 Scala 实现 Akka