我将 Grails 2.4.2 与 RestfulController 一起使用,这个特定的 Controller 使用 PagingRestfulController。
当我在“/product/search”上执行 GET 时,我试图在产品 Controller 中运行操作 searchProducts,但它正在运行 queryForResource。
Grails 使用“/product”(resources:'product') URL 映射创建了 listAllResources 和 queryForResource。以下是我的 URL 映射和产品 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...");
}
最佳答案
您需要定义一个公共(public) search
Controller 中的操作,可能看起来像这样:
def search() {
searchProducts(params)
}
protected
listAllResources
和 queryForResource
方法覆盖 RestfulController
中定义的辅助方法,但它们本身并不作为暴露的 Controller Action 。然后,使用这个嵌套映射:
"/product"(resources:'product') {
"/search"(controller: 'product', action: 'search', method: 'GET')
}
关于Grails 2.4.2 URL 映射在 Controller 中调用错误的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28158142/