grails - 设置复制网站的方法?

时间:2012-01-20 09:27:04

标签: grails

我需要每个用户都可以在复制的网站上自定义自己的页面。在grails中,似乎最直接的方法是:

somedomain.com/someController/JohnDoe

拼写出一个控制器,除了这会强迫人们键入更长的域名,而不是像

那样
somedomain.com/JohnDoe

使用子域可能是另一种方法,但是它们需要自动创建,即有人加入时。

请您澄清Grails支持这种要求/需求(复制网站)的主要方式,以及每种方法的优点/缺点?

谢谢,Ray


编辑:根据Tomasz的编辑,最简单的行动方式尚不清楚。如果您对此有见解,请分享。

1 个答案:

答案 0 :(得分:1)

在grails中称为UrlMappings。你需要声明:

"/$username?" {
    controller = 'someController'
    action = 'user'
}

它重定向到someController,action user和名为username的可选变量。

这个解决方案有一个问题。您访问的每个级别路径都会通过此规则并转到someController。您无法转到somedomain.com/books,因为它会通过上述规则,并且会跟随您someController#user params['username']='books'。然后您无法使用默认操作。但是,如果您确定所有其他路径至少有一个斜杠,例如/books/list然后您可以按照此解决方案

编辑:我错了。它没有像我预期的那样工作。我认为UrlMappings是按照定义的顺序应用的。那不是真的,正如here所解释的那样。更糟糕的是 - 没有记录(GRAILS-6246)。最具体的解释来自Peter Ledbrook:

  

它使用特异性算法,因此应该应用最具体的匹配

你必须进行实验。我建议你使用最安全的解决方案并坚持使用/user/username解决方案。