【问题标题】:Grails: URL mapping with .gsp extension/formatGrails:带有 .gsp 扩展名/格式的 URL 映射
【发布时间】:2020-04-23 19:08:56
【问题描述】:

我有一个类似www.xyz.com/customer/list.gsp的网址请求

当我尝试映射 url 以删除 .gsp 时:

"/customer/list.gsp"(controller: "customer") {
        action = "list"
    }

grails 应用程序无法识别 url 并抛出 404 错误。我在这里遗漏了什么吗?

【问题讨论】:

    标签: grails grails-controller grails-3.3


    【解决方案1】:

    如果您想从 url 中删除 .gsp,那么您可以使用这样的映射...

    "/customer/list"(controller: "customer") {
            action = "list"
    }
    

    你也可以这样做...

    "/customer/list"(controller: "customer", action: "list")
    

    如果您想要控制器中所有操作的 1 个映射,您可以这样做:

    "/customer/$action"(controller: "customer")
    

    默认生成的映射包括"/$controller/$action",它允许您映射到任何控制器中的任何操作。

    有了这些,向/customer/list 发送请求就可以了。

    【讨论】:

      【解决方案2】:

      更新:显然可以映射到 GSP。我仍然认为下面的信息可能会有所帮助,所以我将答案留在上面,但也许我误解了你的问题。

      原始回复:

      您根本不应该映射或请求 gsps。它们用于生成视图,但没有渲染就无法查看。

      相反,转到www.xyz.com/customer/list 之类的网址并映射它

      "/customer/list" (controller: "customer") {
          action = "list"
      }
      

      或者更好的是,您不需要为每个端点自定义映射。像这样的默认设置将起作用:

      "/$controller/$action?/$id?" { }
      

      您的 CustomerController 将在 list 操作中呈现 list.gsp

      【讨论】:

      • "您根本不应该映射或请求 gsps。" - 我不同意这一点。我们特别支持将 url 映射到 GSP(默认的 UrlMappings.groovy 文件会这样做)。但是,这不是问题中的人正在做的事情。它们在 url 中包含 .gsp,但映射到控制器操作。它们没有映射到 GSP。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多