formFactory.form() 不存在!游戏框架

formFactory.form() doesn't exist ! PlayFramework

我有一个小问题,我想创建一个网络应用程序,我通过

的 java 文档学习了 PlayFramework

此示例代码:

public Result hello() {
    DynamicForm requestData = formFactory.form().bindFromRequest();
    String firstname = requestData.get("firstname");
    String lastname = requestData.get("lastname");
    return ok("Hello " + firstname + " " + lastname);
}

“'formFactory'”不存在。

http://i.imgur.com/W941Bgz.png

为什么我没有这个字段?

当我想创建模型时,我没有模型class

http://i.imgur.com/9FW7wp1.png

如果你解决了我的问题,非常感谢! :)

您必须像这样注入您的 formFactory:

@Inject FormFactory formFactory;

来自documentation

To wrap a class you have to inject a play.data.FormFactory into your Controller

Play已经知道FormFactory,所以只需要为它添加一个构造函数参数:

public class FooController {

    private final FormFactory formFactory;

    @Inject
    public FooController(final FormFactory formFactory) {
        this.formFactory = formFactory;
    }

    public Result hello() {
        DynamicForm requestData = formFactory.form().bindFromRequest();
        String firstname = requestData.get("firstname");
        String lastname = requestData.get("lastname");
        return ok("Hello " + firstname + " " + lastname);
    }
}

我猜你提到的 Model 是 EBean。您需要为您的项目启用 EBean,然后您的类路径中就会有必要的 类。

project/plugins.sbt中:

addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "3.0.0")

build.sbt:

lazy val myProject = (project in file(".")).enablePlugins(PlayJava, PlayEbean)

relevant docs 中提供了更多信息。

首先确保在您的 Play Controller 中导入这两个库:

import javax.inject.Inject; import play.data.FormFactory;

之后,在使用表单生成器之前,将其注入您的代码:

@Inject FormFactory formFactory;

您的代码在此之后应该可以正常工作。