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
你必须
- 创建一个
public class FormattersProvider implements Provider<Formatters>
(进行转换)
- 创建
public class FormattersModule extends AbstractModule
- 在
application.conf
中启用FormattersModule
当我 运行 '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
你必须
- 创建一个
public class FormattersProvider implements Provider<Formatters>
(进行转换) - 创建
public class FormattersModule extends AbstractModule
- 在
application.conf
中启用
FormattersModule