2010-09-01 50 views
5

以下是挑战:根据传入的URL,我想显示特定的登录页面,并在登录时根据用户的身份提供特定的用户体验。Grails品牌应用

例如,www.abc.com和www.xyz.com都指向一个提供常见门户体验的Grails实例。如果用户通过www.abc.com到达,我想用登录表单显示ABC飞溅页面。如果用户通过www.xyz.com到达,我想用登录表单显示XYZ启动页面。

一旦用户登录,我需要保留传入URL确定的原始“品牌”上下文。例如,即使通过所有的GSP,控制器等都由所有用户共享,ABC用户将拿起他们自己的CSS,资源包(或条目)等,并且用户将具有与XYZ用户非常不同的视觉体验。

这可能吗?或者是否需要分支应用程序代码库并托管多个独立的门户实例?

回答

7

http://www.grails.org/Views+and+Layouts

看一看,我认为它可以解决90%的您的烦恼。为每个域配置一个特定的布局。布局已加载的每个视图,可以帮助定义的外观和感觉

你可以在过滤器设置变量,基于URL,这可能随后在布局 http://www.grails.org/Filters

class MyFilters { 
    def filters = { 
     myFilter(controller:'*', action:'*') { 
      after = { 
       if (request.requestURI == "xyz") { 
       session.layout = "layout1.gsp" 
       } else { 
       session.layout = "layout2.gsp" 
       } 
      } 
     } 
    } 
} 
+0

阅读谢谢Aaron。我正在计划使用布局,但我还没有想到的是(a)如何根据传入的URL创建初始着陆页,以及(b)如何根据传入的URL设置上下文变量,以便以编程方式确定在每个页面上使用哪个布局。 (我很奇怪我不得不这样做:”/>) – ecodan 2010-09-01 18:49:55

+0

更新了代码以显示替代方法与过滤器 – 2010-09-01 20:36:31

+0

Aaron-您的评论在这方面引发了一些创造性思维,并且我们能够通过使用过滤器(如您所建议的),taglibs和i18n来解决问题。谢谢! – ecodan 2010-09-01 22:20:14