2011-11-16 43 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' ... –