Formatters.register 从 2.4 升级后出现编译错误

Formatters.register compile errors after upgrading from 2.4

当我 运行 'activator compile':

从 2.4 升级到 2.5 后,我遇到了那些奇怪的 'non static' 错误
non-static method  <T>register(java.lang.Class<T>,play.data.format.Formatters.SimpleFormatter<T>) cannot be referenced from a static context

public MyController() {
    Formatters.register(Xpto.class, new XptoConverter());
}

XptoConverter:

public class XptoConverter extends SimpleFormatter<Xpto> {
  @Override
  public Xpto parse(String input, Locale l) throws ParseException {
    return new Xpto().setId(Long.valueOf(input));
  }

  @Override
  public String print(Xpto xpto, Locale l) {
    return xpto.getId().toString();
  }
}

方法不再是静态的;格式化程序被注入。参见 https://www.playframework.com/documentation/2.5.x/JavaForms#Register-a-custom-DataBinder. See also https://github.com/playframework/playframework/pull/5734

你必须

  1. 创建一个 public class FormattersProvider implements Provider<Formatters>(进行转换)
  2. 创建 public class FormattersModule extends AbstractModule
  3. application.conf
  4. 中启用FormattersModule