Неявный экземпляр MessagesProvider не найден. Java Play Framework 2.8 - PullRequest
0 голосов
/ 10 января 2020

У меня проблема с внедрением FormFactory в мой контроллер, когда я пытаюсь передать форму представлению, это вызывает ошибку компиляции "Неявный экземпляр MessagesProvider не найден. Пожалуйста, смотрите https://www.playframework.com/documentation/latest/ScalaForms#Passing -MessagesProvider -в-Form-хелперы ».

ProjectController. java

package controllers;

import java.util.List;

import javax.inject.Inject;

import models.Project;
import play.data.Form;
import play.data.FormFactory;
import play.mvc.*;
import play.twirl.api.Content;
import views.html.Project.*;


public class ProjectsController extends Controller implements ControllerInterfase{
    private Form<Project> projectForm;

    @Inject
    public ProjectsController(FormFactory formFactory) {
        this.projectForm = formFactory.form(Project.class).withDirectFieldAccess(true);
    }

    // Create - Crea un modelo
    @Override
    public Result create() {
        return ok((Content)create.render(projectForm));
    }

} 

create. scala. html

@import helper._

@(projectForm : Form[Project])  
@layout("Create Project"){
        <main>
            @form(action = routes.ProjectsController.store()){
                @inputText(projectForm("id"))
                @inputText(projectForm("owner_id"))
                @inputText(projectForm("name"))

                <input type="submit" value="Create">
            }

        </main>

}

Project. java (модель)

package models;

import javax.persistence.Entity;
import javax.persistence.Id;

import io.ebean.Finder;
import io.ebean.Model;

@Entity
public class Project extends Model{

    public Project() {}

    @Id
    public Integer id;
    public Integer owner_id;
    public String name;


    public static Finder<Integer, Project> find = new Finder<>(Project.class);


}

Есть идеи?

1 Ответ

0 голосов
/ 18 февраля 2020

Ответ, по крайней мере для меня, был найден в примере play- java -формы код

В частности:

1) Внедрение сообщенийApi в контроллер:

@Inject
    public MyController(FormFactory formFactory, MessagesApi messagesApi) {
...
    }

2) Добавление неявного параметра в представление:

@(form: Form[MyForm])(implicit request: Http.Request, messages: play.i18n.Messages)

3) Передача его неявному параметру в форме:

public Result create(Http.Request request) {
        Form<MyForm> form = formFactory.form(MyForm.class);
        return ok(views.html.example.render(form, request, messagesApi.preferred(request)));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...