У меня есть данные, которые вытаскиваются из Интернета. Мне удалось поместить нужные поля в переменные. Как я могу поместить их в коллекцию? Должен ли я использовать expandos? У меня нет класса модели. Я думаю об использовании какой-либо коллекции, а затем распечатаю ее на моей странице GSP.Какую коллекцию использовать в контроллере grails?
ответ
Использование Expando возможно, но не рекомендуется. Карты ([:]) обеспечивают одинаковое количество функций и, как правило, проще в использовании. Кроме того, я бы счел очень плохой практикой использовать только коллекции, в данном случае Карты, для передачи данных, если это не а) крошечный бит данных, или б) данные неструктурированы и нелегко в модель.
Лично я бы просто создал класс для хранения данных. Легче говорить и легче поддерживать.
Пример:
class Result {
String name
String value
}
Что вы будете использовать в своих контроллерах действий, как:
def oneResult() {
return [result:new Result(name:'my name', value: 'my value')]
}
или
def manyResults() {
return [result:[
new Result(name:'my name1', value: 'my value1'),
new Result(name:'my name2', value: 'my value2'),
new Result(name:'my name3', value: 'my value3')
]]
}
Оба они вернутся модель, которая может ссылаться используя имя «result» на вашей странице GSP, и вы можете использовать или перебрать содержимое res ии.
Вы можете использовать Groovy Maps. [foo1: bar1, foo2: bar2, .....]
Expandos полезны для создания динамических объектов.
def myExpando = new Expando()
myExpando.name = "Test User"
myExpando.app = "Grails"
myExpando.task = {
"Hello, $name. Have you read the $app docs yet?"
}
println myExpando.task()
myExpando.app = "Groovy"
println myExpando.task()
Выход:
Hello, Test User. Have you read the Grails docs yet?
Hello, Test User. Have you read the Groovy docs yet?
Если вам нужна выше динамическое свойство в окне просмотра слоя можно использовать EXPANDO.
Допустим, у меня есть имя, код состояния и адрес электронной почты, что мне нужно, чтобы отобразить в моей GSP странице. Я мог бы в принципе сказать: myExpando.name = varName –
Это правильно. – dmahapatro
Как предположил кто-то на этом сайте, я в конечном итоге, используя что-то вроде
def List = []
//Grabbed everything i needed here and then added to the List
List << ["Id": Id,"Name":Name]
//Return the list
- 1. Какую параллельную коллекцию использовать?
- 2. Какую универсальную коллекцию использовать?
- 3. Какую коллекцию использовать в Java?
- 4. , какую коллекцию я должен использовать
- 5. Какую коллекцию я должен использовать?
- 6. Какую коллекцию java можно использовать?
- 7. Какую Java-коллекцию использовать в этом случае?
- 8. Коллекции Java: какую коллекцию использовать и когда?
- 9. Какую универсальную/динамическую коллекцию использовать? (проблема дизайна)
- 10. Какую версию Grails я должен использовать?
- 11. В какую коллекцию входит Монгуоз?
- 12. Grails UnexpectedRollbackException в контроллере
- 13. редирект в контроллере Grails
- 14. Какую коллекцию я должен использовать в этом случае?
- 15. Какую коллекцию следует использовать для хранения xml-файлов в памяти?
- 16. Какую HashMap-подобную коллекцию я должен использовать для этого случая?
- 17. ли использовать arraylist или какую-либо другую коллекцию при повторении
- 18. Какую коллекцию я использовать для хранения моих данных?
- 19. Grails - длительная обработка в контроллере
- 20. Асинхронный вызов в контроллере Grails
- 21. Логические пути Grails в контроллере
- 22. Получить методы в контроллере Grails
- 23. Grails - привязка даты в контроллере
- 24. Grails работает jquery в контроллере
- 25. Grails: Загрузить jdbcDriver в контроллере
- 26. Как вы сохраняете коллекцию Enums в Grails?
- 27. Какую версию twitter bootstrap следует использовать для Grails 1.3.6
- 28. Какую структуру я должен использовать (Grails, Java/Spring)?
- 29. Как Рейвен знает, какую коллекцию включить?
- 30. Как получить полный путь в контроллере grails
Я пошел с вашим предложением и создал класс модели, поэтому теперь я должен просто добавить данные от моего контроллера в класс правильно? –
Исправить. Я обновил свой ответ на примере –
Спасибо, это очень полезно –