You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Grails如何将camelCase驼峰命名转换为用户友好的展示标题?

Grails 驼峰属性名转可读标题的实现方法

底层逻辑说明

你在<f:table>标签中观察到的驼峰转标题的能力,来自Grails Fields插件的内置逻辑,核心是Grails官方提供的字符串处理工具类实现,无需自行编写正则拆分规则。

可直接使用的实现方案

方案1:调用内置工具类(最简实现,和默认转换效果完全一致)

Grails 自带grails.web.util.GrailsStringUtils.splitCamelCase()方法,原生支持将驼峰字符串拆分为空格分隔的可读标题,自动大写每个单词的首字母:

  • GSP 视图中直接使用示例:
${grails.web.util.GrailsStringUtils.splitCamelCase('userName')}

上述代码输出结果为 User Name,和<f:table>的默认展示效果完全相同。

  • 后端Groovy代码中使用示例:
import grails.web.util.GrailsStringUtils

def header = GrailsStringUtils.splitCamelCase("customerAddress")
// 输出结果:Customer Address

方案2:对齐<f:table>完整逻辑(支持国际化)

如果需要完全复刻<f:table>的处理逻辑(优先读取域类属性对应的国际化配置,无配置时再走驼峰拆分),可以配合<g:message>标签实现:

<g:message code="你的域类名小写.属性名" default="${grails.web.util.GrailsStringUtils.splitCamelCase('属性名')}" />

示例(对应User域类的userName属性):

<g:message code="user.userName" default="${grails.web.util.GrailsStringUtils.splitCamelCase('userName')}" />

如果messages.properties中配置了user.userName=用户姓名,会优先显示配置的国际化内容,没有配置则默认显示User Name。

可选优化:自定义标签简化调用

如果需要频繁使用该能力,可以封装自定义GSP标签减少重复代码:

  1. 在grails-app/taglib目录下创建标签类:
class CommonTagLib {
    static namespace = "common"
    def camelToHeader = { attrs ->
        out << grails.web.util.GrailsStringUtils.splitCamelCase(attrs.content)
    }
}
  1. 视图中直接调用:
<common:camelToHeader content="orderId" />
<!-- 输出结果:Order Id -->

内容的提问来源于stack exchange,提问作者magdziarek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 00:45:05