Grails 2.4.2 URL 映射在 Controller 中调用错误的操作

标签 grails url-mapping urlmappings.groovy

我将 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 listAllResourcesqueryForResource方法覆盖 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/

相关文章:

grails - Grails URLMappings中的逻辑 block

database - Grails:另一个表中的两个主键引用

grails - GORM继承

grails - Grails构建测试数据插件-调用DomainObject.build()时MissingMethodException

grails - 如何检测 Url 映射中的片段标识符?

grails - 测试资源 Controller 的 UrlMapping 路径

java - Java AppEngine 中的 URL 映射(用于类似 Python 的功能)

http - Grails 是否缺少对 http OPTIONS 请求的支持?

grails - 如何从 Grails 中的 UrlMapping 中排除特定关键字?