我正在尝试将表单绑定到请求,但由于以下错误而失败:

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中,他们使用的示例没有默认构造函数。

最佳答案

根据错误消息,您的RequestData类似乎是Application类的内部类,在这种情况下,需要Application实例来创建RequestData实例(因为RequestData不是静态的)。如果我有此权利,则可以将RequestData设置为自己的类,或者-如果要将其保留为内部类-则将其设置为静态内部类。

09-28 02:37