获得grails的价值

use*_*858 1 grails groovy grails-orm

def bid= Book.findAllBy(params.bname)

println(bid.id)
Run Code Online (Sandbox Code Playgroud)

我得到了结果 [58]

如何在没有报价的情况下获得价值?

如何将'bid'转换为整数?

Ing*_*gel 8

返回值findAllBy是一个列表.在您的情况下,该列表仅包含一个Book实例.

在列表上使用属性运算符会创建一个新列表,其中包含所有列表元素的相应属性.因此,bid.id创建一个以整数58作为单个元素的列表.toString()列表对象的方法将其打印为[58].为了获得你应该调用的整数值bid[0].id(尽管bid.id[0]- 更浪费 - 在这种情况下也会起作用).

或者你可以打电话Book.findBy(params.bname).id.该findBy方法仅返回单个实例.

  • 只是为了澄清"替代"方法中的技术要点; `Book.findBy`确实会返回@Ingo Kegel建议的单个实例,但更合适的是它会返回与查询匹配的*first*结果.单击[此处](http://www.grails.org/doc/1.3.7/ref/Domain%20Classes/findBy.html)以获取更多信息.假设`bname`是唯一的,我建议"替代"方法是更好的选择. (2认同)