从Grails中的GSP访问类字段

时间:2011-06-22 12:43:47

标签: grails gsp

如何从Grails中的GSP访问类的字段?例如,以下内容:

geocoder.geocode({
      'address': 'london'
   }, 

我需要在用户插入后以编程方式获取地址。如下所示:

geocoder.geocode({
      'address': ${search.city}
   }, 

其中搜索是类,城市是字段。 有没有办法做到这一点? 感谢

更新

我试过这个: 在控制器中:

def map = {
    def searchInstance = Search.get(1)
    [locationList : Location.list(), search:searchInstance]
}

在视图中:

function initialize() {
  var geocoder = new google.maps.Geocoder();
  geocoder.geocode({
      'address': ${search.city}
   }, 
   function(results, status) {
      if(status == google.maps.GeocoderStatus.OK) {

          var myMapOptions = {
                  zoom: 8,
                  center: results[0].geometry.location,
                  mapTypeId: google.maps.MapTypeId.ROADMAP
                };

                map = new google.maps.Map(document.getElementById("map_canvas"),
                    myMapOptions);

                <g:each in="${locationList}" status="i" var="location">     
                var point${location.id} = new google.maps.LatLng(${location.lat}, ${location.lng});
                var myMarkerOptions${location.id} = {
                      position: point${location.id}, 
                      map: map
                     };
                if(map.getCenter().distanceFrom(point${location.id}) < 500000)
                    var marker${location.id} = new google.maps.Marker(myMarkerOptions${location.id});   
            </g:each>

      }
   });

}

我可以从视图中访问地图闭包返回的位置列表,但我无法访问搜索实例。 有什么想法吗?

2 个答案:

答案 0 :(得分:1)

如果您将该类的实例作为模型从控制器传递到视图,则可以像平常一样访问字段。

Controller: searchController {
    def search = {
        def searchInstance = Search.get(1) //assuming this gets the search that you want
        [search:searchInstance] // return searchInstance to the view under the alias search
    }
}

Gsp: search.gsp {
    geocoder.geocode({
      'address': ${search.city}
   },
}

答案 1 :(得分:0)

您不能只将search变量作为part of your model in the controller返回吗?