Grails 2.4.2在控制器中调用错误动作的URL映射

时间:2015-01-26 20:26:31

标签: grails url-mapping urlmappings.groovy

我正在使用Grails 2.4.2和RestfulController,这个特殊的控制器使用PagingRestfulController。

当我在“/ product / search”上执行GET时,我正在尝试在Product Controller中运行action searchProducts,而是运行queryForResource。

Grails使用“/ product”(资源:'product')URL映射创建了listAllResources和queryForResource。以下是我的URL Mapping和Product Controller的适用部分。如何调用搜索操作?

网址映射

"/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...");
}

1 个答案:

答案 0 :(得分:0)

您需要在控制器中定义公共search操作,该操作可能如下所示:

def search() {
    searchProducts(params)
}

受保护的listAllResourcesqueryForResource方法会覆盖RestfulController中定义的辅助方法,但它们本身不会用作公开的控制器操作。

然后,使用此嵌套映射:

"/product"(resources:'product') {
    "/search"(controller: 'product', action: 'search', method: 'GET')
}