我正在尝试将表单绑定到请求但它失败并出现以下错误:
Execution exception
[RuntimeException: Cannot instantiate class controllers.Application$RequestData. It must have a default constructor]
错误描述看起来很简单,但查看代码:
public class RequestData {
@Required
public String id;
public RequestData() { }
public RequestData(String id) {
this.id = id;
}
}
public static Result index() {
...
Form<RequestData> requestDataForm = form(RequestData.class);
RequestData requestData = requestDataForm.bindFromRequest().get();
...
}
你可以看到该类确实有一个默认的构造函数,所以这个错误根本不清楚。
有什么想法吗? 感谢。
有趣的是,在official documentation中,他们使用的示例没有默认构造函数。
答案 0 :(得分:5)
从错误消息中看起来您的RequestData类是Application类的内部类,在这种情况下,需要Application实例来创建RequestData的实例(因为RequestData不是静态的)。如果我有这个权利,那么要么将RequestData作为自己的类,要么 - 如果你想把它作为一个内部类 - 让它成为一个静态的内部类。