【问题标题】:How to map all requests to a controller go to one method and access the original parameter如何将所有请求映射到控制器转到一种方法并访问原始参数
【发布时间】:2016-02-22 23:43:03
【问题描述】:

我有一个控制器,我试图根据 url 设置默认值 - 但所有请求都发送到一个控制器。 试图将答案扩展到:URLMapping to direct all request to a single controller/action

我是在 URLMappings.groovy 中完成的

"/**"(controller:"lab", action:"index", params:[labName:action])

我希望可以将原始动作名称添加到参数中,但这似乎没有任何作用。

我有什么方法可以将所有发往该控制器的请求映射到一个动作,然后看看原始动作名称是什么?

【问题讨论】:

    标签: grails grails-controller grails-config


    【解决方案1】:

    动作名称是根据 url 映射而不是请求的 url 决定的。当您使用单个操作时,您将始终将操作名称作为索引。根据您的要求,以下是您可以选择的一些选项:

    • 使用请求的 url 和 http 方法找到正确的控制器和操作。不建议。
    • 使用过滤器设置默认数据
    • 在请求属性中保存原始控制器和操作后,使用过滤器重定向到默认控制器。不推荐,因为它会导致多次重定向
    • 使用默认控制器扩展您的控制器,并在拦截器中进行数据设置。

    【讨论】:

    • 如果我将所有请求映射到一个控制器,有什么方法可以访问原始 URL?
    • HttpServletRequest 中有不同的方法来获取原始 url:getPathInfo()、getServletPath()、getRequestURI()、getRequestURL()。您可以查看他们的文档以找出您需要的文档。
    • 我最终在 urlMappings: "/lab/$labname"(controller: "lab", action: "index") 中这样做了,它给了我实验室名称作为参数。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多