Опитвам се да използвам приставката за пазарска количка 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