我正在使用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...");
}
答案 0 :(得分:0)
您需要在控制器中定义公共search
操作,该操作可能如下所示:
def search() {
searchProducts(params)
}
受保护的listAllResources
和queryForResource
方法会覆盖RestfulController
中定义的辅助方法,但它们本身不会用作公开的控制器操作。
然后,使用此嵌套映射:
"/product"(resources:'product') {
"/search"(controller: 'product', action: 'search', method: 'GET')
}