Grails обрабатывает информацию из базы данных sql - PullRequest
0 голосов
/ 16 марта 2011

Я хочу получить некоторые данные из моей базы данных sql и записать их на страницу .gsp. Для этого я сделал следующее:

<%
    def temp = dbname.Road.list()
%>

<strong>Name:</strong>${temp.name}
<strong>Local:</strong>${temp.local}

, который даст следующий вывод:

Имя: Picadilly

Местный: Лондон

Мой учитель сказал мне, что Grails работает через контроллеры, и, хотя этот путь не является неправильным, я должен изменить его так, чтобы запрашиваемая информация из базы данных запрашивалась и возвращалась в контроллере, а к ней нет прямого доступа. Мне нужна помощь в этом .. Спасибо заранее.

Ответы [ 2 ]

4 голосов
/ 16 марта 2011

Это абсолютно неправильный путь. Grails или нет, размещение такого кода в представлении является огромным анти-паттерном. Путь Grails будет иметь домен Road. И есть RoadController.

class Road {
   String name
   String local
}

class RoadController {
   def list = {
       [roadList: Road.list()]
   }
}

И тогда у вас будет файл list.gsp, расположенный в grails-app / views / road / list.gsp для рендеринга модели, поступающей из контроллера.

<ul>
<g:each in="${roadList}">
  <li>Name: ${it.name}, Locale: ${it.local}</li>
</g:each>
</ul>

Таким образом, получить доступ к этому так же просто, как:

http://localhost:8080/youApp/road/list

Это довольно простой материал Grails, который вы можете найти в сотнях учебников и книг, и если вы используете строительные леса, предоставляемые Grails, вам даже не нужно писать код. Займитесь поиском.

0 голосов
/ 17 марта 2011

Имейте в виду, что выполнение list () загружает все содержимое этой таблицы в память на сервере.Если бы он был достаточно большим, ваш сервер зависал бы из-за ошибки нехватки памяти в худшем случае и был бы медленным со временем в лучшем случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...