Я пытаюсь использовать плагин корзины покупок Grails, найденный здесь: http://grails.org/plugin/shopping-cart
Мне удалось успешно установить плагин в свое приложение, а также внедрить службу в свой контроллер:
class TestController {
def shoppingCartService
def index() {
def s = new DomainObj(name: "A Plain Ole Domain Object")
s.addToShoppingCart()
}
}
Похоже, продукт добавляется в мою корзину, как я и ожидал. Однако проблема, с которой я сейчас сталкиваюсь, заключается в том, что на самом деле перечисляются товары, выпавшие из корзины. Согласно отладчику, после выполнения вышеуказанного кода в корзине действительно есть товар (ы), поскольку он возвращает:
com.metasieve.shoppingcart.ShoppingItem : 1
Товар правильно добавляется в корзину, но теперь я хотел бы снова перечислить имя элемента, поэтому в этом случае я хочу отобразить имя A Plain Ole Domain Object
. Как мне это сделать?
Я не уверен в синтаксисе получения реальных объектов из тележки. В документации не описывается, как это сделать, а просто говорится, что следующее должно работать:
def checkedOutItems = shoppingCartService.checkOut()
checkedOutItems.each {
println it['item']
println it['qty']
}
Но это выводит com.metasieve.shoppingcart.ShoppingItem : 1
, который является лишь ссылкой на какой-то произвольный товар в корзине. Я хочу вернуть фактическое название моего предмета.
Заранее спасибо.
РЕДАКТИРОВАТЬ:
Мой доменный класс (DomainObj) определяется следующим образом:
class DomainObj extends com.metasieve.shoppingcart.Shoppable {
String name
static constraints = {
name blank: false
}
}
РЕДАКТИРОВАТЬ № 2:
def index() {
def s = new DomainObj(name: "A Plain Ole Domain Object")
s.addToShoppingCart()
def r = new DomainObj(name: "Second Plain Ole Domain Object")
r.addToShoppingCart()
def checkedOutItems = shoppingCartService.checkOut()
println currentItems
println "-----"
checkedOutItems.each {
println it['item']
println it['qty']
}
}
Результатом этого является:
[com.metasieve.shoppingcart.ShoppingItem : 1, com.metasieve.shoppingcart.ShoppingItem : 2]
com.metasieve.shoppingcart.ShoppingItem : 2
1
com.metasieve.shoppingcart.ShoppingItem : 1
1