【发布时间】:2015-03-05 00:05:30
【问题描述】:
学习 Groovy 和 Grails,我正在尝试通过制作 BaseController 来简化一些控制器。
我定义如下:
class BaseController<T> {
public def index(Integer max) {
params.max = Math.min(max ?: 10, 100)
respond T.list(params), model:[instanceCount: T.count()]
}
}
然后我有以下内容:
class TeamController extends BaseController<Team> {
static allowedMethods = [save: "POST", update: "PUT", delete: "DELETE"]
/*
def index(Integer max) {
params.max = Math.min(max ?: 10, 100)
respond Team.list(params), model:[teamInstanceCount: Team.count()]
}
*/
}
每次我尝试调用它时,都会在 T.count() 上收到 MethodMissingException。为什么 Team.count() 可以工作,但是当我尝试使用泛型时 T.count() 会失败?
-- 编辑--(添加例外) 没有方法签名:静态 java.lang.Object.count() 适用于参数类型:() 值:[]
【问题讨论】:
-
更奇怪...为什么 T.list() 有效,但 T.count() 无效?如果它在单元测试中失败,则说明 .count() 没有被很好地模拟。
-
这在我实际运行应用程序时失败了...尚未尝试为其编写测试。