在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());
答案 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 构建的,请确保您已注入表单或将其添加到代码中。