Форма метода (Class <T>) из класса Form устарела в Play! Фреймворк

Я потратил много времени, пытаясь решить эту проблему, и безуспешно пытался найти способ ее заменить.

Сначала играй! обязывает меня использовать и вводить FormFactory (что объясняется вhttps://www.playframework.com/documentation/2.5.0/JavaForms).

Но просто для создания экземпляра этого FormFactory мне пришлось передать 3 параметра для его конструктора, то есть MessagesApi, Formatters и Validator. Кроме того, мне пришлось создать экземпляр интерфейса Validator, и я не уверен, что это правильный способ сделать это.

Чтобы было проще, я разделил его на другой класс:

    package controllers;

    import java.util.Set;
    import javax.validation.ConstraintViolation;
    import javax.validation.Validator;
    import javax.validation.executable.ExecutableValidator;
    import javax.validation.metadata.BeanDescriptor;
    import play.data.FormFactory;
    import play.data.format.Formatters;
    import play.i18n.MessagesApi;

    class Validador implements Validator {

    @Override
    public ExecutableValidator forExecutables() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public BeanDescriptor getConstraintsForClass(Class<?> arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public <T> T unwrap(Class<T> arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public <T> Set<ConstraintViolation<T>> validate(T arg0, Class<?>... arg1) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public <T> Set<ConstraintViolation<T>> validateProperty(T arg0, String arg1, Class<?>... arg2) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public <T> Set<ConstraintViolation<T>> validateValue(Class<T> arg0,  String arg1, Object arg2, Class<?>... arg3) {
        // TODO Auto-generated method stub
        return null;
    }
}

public class FormCreator {

    MessagesApi msgAPI;
    Formatters formatador;
    Validador validador;
    FormFactory factory;

    public FormCreator() {
        msgAPI = new MessagesApi(null);
        formatador = new Formatters(msgAPI);
        validador = new Validador();
        factory = new FormFactory(msgAPI, formatador, validador);
    }


    // getters e setters
    public MessagesApi getmsgAPI() {
        return msgAPI;
    }
    public void setmsgAPI(MessagesApi msgAPI) {
        this.msgAPI = msgAPI;
    }
    public Formatters getFormatador() {
        return formatador;
    }
    public void setFormatador(Formatters formatador) {
        this.formatador = formatador;
    }
    public Validador getValidador() {
        return validador;
    }
    public void setValidador(Validador validador) {
        this.validador = validador;
    }
    public FormFactory getFactory() {
        return factory;
    }
    public void setFactory(FormFactory factory) {
        this.factory = factory;
    }
}

И в моем контроллере я должен положить что-то вроде этого:

@Inject
FormCreator formCreator = new FormCreator();

Несмотря на то, что я потратил несколько часов, чтобы выяснить это, этот вопрос был решен.

Другой, что бы я ни делал, метод bindFromRequest () всегда возвращает ноль, и это не потому, что затмение, а все остальное, это потому, что я вызываю его из формы, созданной этой фабрикой.

Пример:

// never works
formCreator.getFactory().form(Diretor.class).bindFromRequest();

// works fine, but is deprecated
Form.form(Diretor.class).bindFromRequest();

Какой новый метод использовать вместо этого устаревшего метода?

Заранее спасибо.

Ответы на вопрос(0)

Ваш ответ на вопрос