如何禁用 Grails createLink 编解码器(编码)?

Posted

技术标签:

【中文标题】如何禁用 Grails createLink 编解码器(编码)?【英文标题】:How can I disable Grails createLink codec (encoding)? 【发布时间】:2013-09-14 05:37:20 【问题描述】:

将 Grails 从 2.2.0 更新为 2.2.4。 之前:http://localhost:8180/sub:favorites 之后:http://localhost:8180/sub%3Afavorites

如您所见,Grails 默认对 URL 的参数进行编码。如何禁用它并手动对其进行编码?

【问题讨论】:

相信您愿意更改编码设置 (***.com/questions/1337464/… 从 2.2.0 更新到 2.2.5 后,我遇到了完全相同的问题。我的解决方案(目前)将手动解码 URL,如下面的@fedor-belov 所述。 【参考方案1】:

很有可能有更简单的方法。但如果没有,您可以执行以下操作:

Grails 注册了一个名为 grailsLinkGenerator 的 bean。此 bean 用于在应用程序中创建链接(createLink(..)<g:createLink />)。我认为默认实现是CachingLinkGenerator,它是DefaultLinkGenerator 的子类,它再次实现了接口LinkGenerator。

您可以扩展其中一个类并覆盖 resources.groovy 中的 bean:

 grailsLinkGenerator(YourLinkGenerator) 
   ..
 

【讨论】:

自 2.2.2 起,此行为在 RegexUrlMapping 类、方法 encode 中硬编码。我已经创建了更改它的票 - jira.grails.org/browse/GRAILS-10477 。目前解决此问题的唯一方法是手动解码 URL

以上是关于如何禁用 Grails createLink 编解码器(编码)?的主要内容,如果未能解决你的问题,请参考以下文章

将 Javascript 变量传递到 createlink 方法调用 Grails

如何在 grails 中禁用 log4j 插件?

如何在 Grails/Spring Security 插件中禁用 /login/auth

使用 grails 后处理 *.js 文件

我可以在 GSP 之外使用 grails 标签吗?

Grails,SpringSecurity - 如果未记录,则禁用重定向