2011-06-22 3 views
0

Как я могу получить доступ к полям классов из GSP в Grails? Например, следующее:Доступ к полям классов из GSP в Grails

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

Мне нужно получить адрес программно после того, как он был вставлен пользователем. Что-то вроде:

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

где поиск - это класс, а город - это поле. Есть ли способ сделать это? Благодаря

UPDATE

Я попытался это: В контроллере:

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> 

     } 
    }); 

}

я могу получить доступ к п просмотрите список местоположений, возвращенный закрытием карты, но я не могу получить доступ к экземпляру поиска. Любые идеи?

+0

Является частью 'geocoder.geocode ({...})' уже внутри '$ {}' в GSP? – Pat

+0

Нет, это в скрипте javascript, но не внутри $ {} –

ответ

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} 
    }, 
} 
+0

Ваше решение похоже на то, что мне нужно, но оно не работает для меня. Возможно, потому что мне нужно поле города, а не в search.gsp, а в map.gsp. У меня есть дополнительное закрытие в контроллере, называемом map, которое я использую для вызова map.gsp. Он дает исключение: невозможно получить свойство «город» на нулевом объекте –

+0

Это не дает никакой ошибки после завершения. Но взгляд так и не появился. Пожалуйста, ознакомьтесь с обновлением вопроса, чтобы проверить код. –

+0

Я нашел ошибку. Мне пришлось вызвать экземпляр поиска внутри кавычек, например: «address»: «$ {search.city}» –

Смежные вопросы