如何禁用 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