Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java formFactory.form()不';不存在!游戏框架_Java_Playframework_Playframework 2.5 - Fatal编程技术网

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

Java formFactory.form()不';不存在!游戏框架,java,playframework,playframework-2.5,Java,Playframework,Playframework 2.5,我有一个小问题,我想创建一个web应用程序,并学习PlayFramework和java文档 此示例代码: public Result hello() { DynamicForm requestData = formFactory.form().bindFromRequest(); String firstname = requestData.get("firstname"); String lastname = requestData.get("lastname");

我有一个小问题,我想创建一个web应用程序,并学习PlayFramework和java文档

此示例代码:

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

为什么我没有这个字段?

当我想创建一个模型时,我没有模型类


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

您必须像这样注入formFactory:

@Inject FormFactory formFactory;
从:

要包装类,必须将play.data.FormFactory注入控制器

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);
    }
}
我猜你提到的
模型是EBean的。您需要为您的项目启用EBean,然后在类路径上就有了必要的类

项目/plugins.sbt
中:

addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "3.0.0")
lazy val myProject = (project in file(".")).enablePlugins(PlayJava, PlayEbean)
build.sbt

addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "3.0.0")
lazy val myProject = (project in file(".")).enablePlugins(PlayJava, PlayEbean)

有关详细信息,请参阅。

首先确保在播放控制器中导入这两个库:

import javax.inject.inject;
导入play.data.FormFactory

之后,在使用Form Builder之前,将其插入到代码中:

@Inject FormFactory formFactory;

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

如何?在哪里,有什么依赖关系?xD我很困惑看一下这里的构造函数:[link]为什么我不能按照示例中的说明去做?我的应用程序中没有play.data包谢谢你的回答,但我没有play.data包这太疯狂了o
FormFactory
位于核心
playjava
jar中。由于您使用的是IntelliJ,您可以通过转到
项目
视图的底部,打开
外部库
树节点并打开
com.typesafe.play:play-java_2.11:2.5.x:jar
依赖项来轻松检查这一点。在那里,您应该可以找到
FormFactory
。我没有在外部库中玩java[…]!!当我想为每个示例添加addSbtPlugin(“com.typesafe.sbt“%”sbt play ebean“%”3.0.0)时,我不能,因为我的sbt版本是0.13.5,我将在0.13.7中更新,可能是问题的原因?你是如何创建游戏项目的?如果使用
activator new
并在IntelliJ中打开生成的
build.sbt
,则不应出现这些问题。