2011-11-16 44 views
1

我们正在开发我们的Grails项目。我们希望根据他们访问我们网站的国家向用户展示数据。 我有一个地方,我存储的国家的位置。通过使用geoip grails插件。Grails的地理 - 位置初始化

我的问题是,我们可以初始化从它击中了任何控制器/行动之前被excessed该站点的国名的会议,让一些配置文件或其他地方说。

回答

3

你应该能够做到这一点的一个Filter。像这样的事情,放在grails-app/confGeoFilters.groovy

class GeoFilters { 
    def geoIpService 

    def filters = { 
    countryCheck(controller:'*', action:'*') { 
     before = { 
     if(!session.geolocation) { 
      session.geolocation = geoIpService.getLocation(request.remoteAddr) 
     } 
     } 
    } 
    } 
} 

如果(我还没有尝试过,虽然)检查,看看是否存在于会话geolocation,如果没有,就应该从它取geoIpService

+0

喜添,感谢名单快速回复:)我想这个过滤器将与服务器,那里的战争将要部署的IP初始化会话。根据谁去访问我们的网站 – lucky

+0

我不认为request.remoteAddr是服务器的IP ... – Philippe

+0

@lucky菲利普是正确的用户将它重新初始化会话,'request.remoteAddr'是客户端的IP地址作为'String' ... –