播放框架2.4表单填写不起作用

时间:2015-11-12 22:36:54

标签: java playframework playframework-2.4

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

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());

2 个答案:

答案 0 :(得分:2)

此代码是正确的。请查看其他要点 - 也许您在控制台中没有识别出“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());

答案 1 :(得分:0)

我正在学习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