gpt4 book ai didi

ShoppingCart 插件的 Grails 问题

转载 作者:行者123 更新时间:2023-12-02 15:29:52 25 4
gpt4 key购买 nike

我正在尝试使用此处找到的 Grails 购物车插件:http://grails.org/plugin/shopping-cart

我能够在我的应用程序中成功安装插件,并在我的 Controller 中注入(inject)服务:

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

最佳答案

根据文档,它["item"] 为您提供了扩展 Shoppable 的域类的实体。因此,在这种情况下,当您将其打印出来时,它会调用该域类的 toString() 方法。如果您希望它返回 name 属性的值,您需要实现自己的 toString()。这是一个这样的例子

@Override
String toString() {
return name
}

编辑:
好吧,从文档中并不清楚它['item'] 是指向 Shoppable 实例的指针,然后您可以使用它来查询购物车中的实际产品,如下所示:
com.metasieve.shoppingcart.Shoppable.findByShoppingItem(it['item'])

因此,以下将打印出您的产品的 toString() 值
checkedOutItems.each {
println com.metasieve.shoppingcart.Shoppable.findByShoppingItem(it['item'])
println it['qty']
}

为了测试,我创建了以下域和 Controller 。

领域:
package com.test

class MyProduct extends com.metasieve.shoppingcart.Shoppable {
String name

static constraints = {
name(blank: false)
}

@Override
String toString() {
return name
}
}

Controller :
package com.test

class MyProductController {

def shoppingCartService

def index() {
def p1 = new MyProduct(name: 'one')
p1.save(flush: true, failOnError: true)
p1.addToShoppingCart()
def p2 = new MyProduct(name: 'two')
p2.save(flush: true, failOnError: true)
p2.addToShoppingCart()

def checkedOutItems = shoppingCartService.checkOut()
checkedOutItems.each {
println com.metasieve.shoppingcart.Shoppable.findByShoppingItem(it['item'])
println it['qty']
}
}
}

关于ShoppingCart 插件的 Grails 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21241137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com