0

我将 Grails 2.4.2 与 RestfulController 一起使用,这个特定的控制器使用 PagingRestfulController。

当我在“/product/search”上执行 GET 时,我试图在产品控制器中运行操作 searchProducts,但它正在运行 queryForResource。

Grails 使用“/product”(resources:'product') URL 映射创建了 listAllResources 和 queryForResource。以下是我的 URL 映射和产品控制器的适用部分。如何调用搜索操作?

网址映射

"/product"(resources:'product')
"/product/search"(controller: 'product'){
    action = [GET: 'searchProducts']
}

产品控制器

protected List<Product> searchProducts(Map params) {
    log.debug("searching products...");
}

protected List<Product> listAllResources(Map params) {
    log.debug("listing all resources...");
}

protected List<Product> queryForResource(Serializable id) {
    log.debug("querying for resources...");
}
4

1 回答 1

0

您需要search在控制器中定义一个公共操作,它可能看起来像这样:

def search() {
    searchProducts(params)
}

protectedlistAllResourcesqueryForResource方法覆盖定义在 中的辅助方法RestfulController,但它们本身不用作公开的控制器操作。

然后,使用这个嵌套映射:

"/product"(resources:'product') {
    "/search"(controller: 'product', action: 'search', method: 'GET')
}
于 2015-01-26T23:43:39.267 回答