2013-01-15 63 views
0

我需要在生成链接时覆盖Grails的默认行为。目的是根据当前语言环境更改网址。强制Grails重制链接

我已经成功覆盖了DefaultUrlMappingsHolder,但它只是在第一次创建链接时在第一个Web请求上工作。 Grails似乎将链接存储在某个地方,因此下次我将createLink设置为相同的控制器和操作时,它只显示链接而不重新运行创建链接的过程。因此,当区域设置改变时链接不会改变。

我所做的:

  • 为每种语言创建urlMapping中。例如http://myapp/searchhttp://myapp/suche都指向'SearchController'
  • 覆盖DefaultUrlMappingsHolder,当通过反向URL映射创建链接时,它将区域设置考虑在内,并为每个区域选择正确的urlmapping并创建正确的url。

我该怎么做才能阻止Grails的这种行为,并强制链接生成再次运行?

谢谢。

+0

你是如何重写DefaultUrlMappingsHolder的? – Samuel

回答

0

你安装了什么版本的Grails?在Grails中有关于它的jira。它在更高版本中得到修复。

+0

谢谢,但我不这样做,我在那个杰拉有同样的问题。 – BMH

+0

我正在使用Grails 2.0.1 在我的情况下,'getReverseMapping'可以正常工作,但正好在第一次创建链接时。当我刷新或转到另一个具有相同链接的页面时,不再触发'getReverseMapping'。每次渲染链接时,我都要运行'getReverseMapping',所以在区域设置发生变化时链接会发生变化。 – BMH