我需要每个用户都可以在复制的网站上自定义自己的页面。在grails中,似乎最直接的方法是:
somedomain.com/someController/JohnDoe
拼写出一个控制器,除了这会强迫人们键入更长的域名,而不是像
那样somedomain.com/JohnDoe
使用子域可能是另一种方法,但是它们需要自动创建,即有人加入时。
请您澄清Grails支持这种要求/需求(复制网站)的主要方式,以及每种方法的优点/缺点?
谢谢,Ray
编辑:根据Tomasz的编辑,最简单的行动方式尚不清楚。如果您对此有见解,请分享。
答案 0 :(得分:1)
在grails中称为UrlMappings。你需要声明:
"/$username?" {
controller = 'someController'
action = 'user'
}
它重定向到someController,action user
和名为username
的可选变量。
这个解决方案有一个问题。您访问的每个级别路径都会通过此规则并转到someController
。您无法转到somedomain.com/books
,因为它会通过上述规则,并且会跟随您someController#user
params['username']='books'
。然后您无法使用默认操作。但是,如果您确定所有其他路径至少有一个斜杠,例如/books/list
然后您可以按照此解决方案
它使用特异性算法,因此应该应用最具体的匹配
你必须进行实验。我建议你使用最安全的解决方案并坚持使用/user/username
解决方案。