formFactory.form() не существует! PlayFramework

У меня небольшая проблема, я хочу создать веб-приложение, и я изучаю 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'' не существует.

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

Почему у меня нет этого поля?

И когда я хочу создать модель, у меня нет класса модели

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

Большое спасибо, если вы решите мою проблему! :)


person Kwizzy FR    schedule 31.10.2016    source источник


Ответы (3)


Из документации:

Чтобы обернуть класс, вам нужно внедрить 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);
    }
}

Я предполагаю, что Model, о котором вы упомянули, относится к EBean. Вам нужно включить EBean для вашего проекта, и тогда у вас будут необходимые классы в пути к классам.

In project/plugins.sbt:

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

build.sbt:

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

Дополнительная информация доступна в соответствующих документах.

person Steve Chaloner    schedule 31.10.2016
comment
Спасибо за ответ, но посмотрите i.imgur.com/z8nYVv1.png есть пакет play.data, это безумие! :о - person Kwizzy FR; 31.10.2016
comment
FormFactory находится в основной банке play-java. Поскольку вы используете IntelliJ, вы можете легко проверить это, перейдя в нижнюю часть представления Project, открыв узел дерева External Libraries и открыв зависимость com.typesafe.play:play-java_2.11:2.5.x:jar. Там вы должны найти FormFactory. - person Steve Chaloner; 31.10.2016
comment
У меня нет play-java[...] во внешних библиотеках!! И когда я хочу добавить addSbtPlugin(com.typesafe.sbt % sbt-play-ebean % 3.0.0) для примера, я не могу, потому что моя версия sbt 0.13.5, я обновлю 0.13.7, возможно причина проблемы? ссылка - person Kwizzy FR; 31.10.2016
comment
Как вы создали свой проект Play? Если вы используете activator new <project name> и открываете полученный build.sbt в IntelliJ, у вас не должно возникнуть ни одной из этих проблем. - person Steve Chaloner; 31.10.2016

Сначала обязательно импортируйте эти 2 библиотеки в свой Play Controller:

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

После этого, прежде чем использовать Form Builder, внедрите его в свой код:

@Inject FormFactory formFactory;

После этого ваш код должен работать нормально.

person defcon    schedule 23.02.2018

Вам нужно будет ввести свой formFactory следующим образом:

@Inject FormFactory formFactory;
person DLIK    schedule 31.10.2016
comment
Как ? И где, при какой зависимости? хд я в замешательстве - person Kwizzy FR; 31.10.2016
comment
Взгляните на конструктор здесь: [ссылка]playframework.com/documentation/2.5.9/api/java/play/data/ - person DLIK; 31.10.2016
comment
Почему я не могу просто сделать то, что написано в примере? У меня нет пакета play.data в моем приложении. - person Kwizzy FR; 31.10.2016