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 中为 Scala 实现 CORS
Play Framework 2.4 - 注入的字段始终为空