2015-01-26 43 views
0

我正在使用Grails 2.4.2和RestfulController,並且此特定控制器使用PagingRestfulController。Grails 2.4.2在控制器中調用錯誤動作的URL映射

我試圖在「/ product/search」上執行GET時運行產品控制器中的操作searchProducts,而是運行queryForResource。

Grails使用「/ product」(resources:'product')URL映射創建listAllResources和queryForResource。以下是我的URL映射和產品控制器的適用部分。我怎樣才能調用搜索動作?

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

回答

0

你需要在你的控制器來定義一個公共search行動,這可能會是這個樣子:

def search() { 
    searchProducts(params) 
} 

受保護的listAllResourcesqueryForResource方法會覆蓋RestfulController中定義的幫助程序方法,但本身不會用作控制器的暴露操作。

然後,使用嵌套映射:

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

它仍在運行queryForResource – 2015-01-27 14:35:12

+0

見編輯答案 – 2015-01-27 16:45:00

+0

安德魯,感謝您的幫助,但它仍在運行queryForResource – 2015-01-27 17:19:21