According to Extending Restful Controller
我可以创建一个这个RestfulController的SubClass,成为我想要的每个rest Controller的Base控制器类。
将其子类化为DIRECT资源控制器。
Class BooksController extends RestfulController {
BooksController() {super(Book)}
但是,如果相反,我按照grails DOC创建一个这样的基本控制器:
class MyRestController<T> extends RestfulController<T> {
static responseFormats = ['json', 'xml']
MyRestController(Class<T> domainClass) {this(domainClass, false)}
MyRestController(Class<T> domainClass, boolean readOnly) {
super(domainClass, readOnly)
}
我收到了一个错误:
Failed to instantiate [clash.MyRestController]: No default constructor found;
我尝试将此控制器放在controllers文件夹或src文件夹中。
只有在我创建默认构造函数但它不是我想要的时才有效。我不希望这个类为任何域类提供API,而是我想创建扩展此类的新控制器。
class BooksController extends MyRestController {
BooksController() {super(Book)}
答案 0 :(得分:1)
问题是该类被识别为控制器,并且框架正在尝试创建控制器的实例。我们用来确定是否应该发生的标准之一是我们检查该类是否是抽象的。有问题的班级应标记为抽象
使其工作的一种方法是将其移出grails-app/controllers
目录并在src/main/groovy/
下定义。
答案 1 :(得分:0)
对不起。只需清理并运行app即可解决问题。我的错?