Grails - UrlMapping

Summary

  • 处理 controler 的一些规则。
  • 注意:如果配合 spring core 使用,某些路径记得权限控制。

默认配置

package cn.duchaoqun
class UrlMappings {
static mappings = {
// 默认的
// 直接访问 /controller 根据约定会调用 index action。
// 直接方法 /controller/action1 根据约定会调用 action1。
// 直接访问 /controller/action1/123 一般会取当前 controller 的对象作为参数,id就是123。
// format 参数一般是在开发 API 的时候用,例如 .xml .json 的时候用。
"/$controller/$action?/$id?(.$format)?"{
constraints {
// apply constraints here
}
}
"/"(controller:'login', action:'auth') // 访问指定 controller 的指定 action
"500"(view:'/error')
"404"(view:'/notFound')
}
}

自定义 controller 和 action

package cn.duchaoqun
class UrlMappings {
static mappings = {
// 根 url
"/"(view:"/index") // 访问 /views/index
"/"(controller:'login') // 访问指定 controller 的指定默认 action(index)
"/"(controller:'login', action:'auth') // 访问指定 controller 的指定 action
"/"(controller:'login', view:'about') // 访问指定 controller 下的指定 view 页面。
}
}

传递 URL 参数

package cn.duchaoqun
class UrlMappings {
static mappings = {
// Grails会将URL中$name位置的内容当成参数放在params里面,然后再 index action 里面通过 params.name 获取该值。
"/character/$name"(controller:"character")
}
}

处理不同类型的 HTTP 请求

package cn.duchaoqun
class UrlMappings {
static mappings = {
// 处理不同类型的 HTTP 请求
"/character/$name" {
controller = "character"
action = [GET:'getAction', POST:'postAction']
}
// 使用通配符
// "/character/*.html"(controller:"character")
// "/character/$name.html"(controller:"character")
}
}

使用通配符

package cn.duchaoqun
class UrlMappings {
static mappings = {
// 使用通配符
"/character/*.html"(controller:"character")
"/character/$name.html"(controller:"character")
}
}

Reference

http://docs.grails.org/latest/guide/theWebLayer.html#applyingConstraints
https://guides.grails.org/grails_url_mappings/guide/index.html

posted @   duchaoqun  阅读(292)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示