[Grails] list时不能使用if判断?!

andrie6184 2009-07-29
Grails是初学,对Groovy的语法也不甚了解,刚才碰到了一个以往常的java知识无法理解的现象,希望有知道缘由的前辈给予指点:

我希望list一个domain时能够通过判断session中的用户所属群组而给出不同的list,于是我写了下面的代码
if (session.usersInfo?.group?.id == 1) {
            [productsInstanceList: Products.findAllByProvider(session.usersInfo, [max: params.max])]
            flash.message = "${session.usersInfo?.group?.id == 1} + ${params.max} + ${Products.countByProvider(session.usersInfo)}"
        }
        else {
            [productsInstanceList: Products.list(params)]
        }

出乎意料的是页面并没有显示相应的列表,而flash.message的值却是:
true + 10 + 2

显然if里的语句执行了,但是为何值没有显示出来呢,如果有哪位知道请不吝赐教,先谢过了。
JohnnyJian 2009-07-29
[productsInstanceList: Products.findAllByProvider(session.usersInfo, [max: params.max])]
flash.message = "${session.usersInfo?.group?.id == 1} + ${params.max} + ${Products.countByProvider(session.usersInfo)}"

两行交换一下
andrie6184 2009-07-30
我试过交换了,结果一样~~~基本就是那个给productsInstanceList赋值的这句只要在if里面就没效果。
JohnnyJian 2009-07-30
用Grails 1.2
Grails 1.1用Groovy 1.5,不支持if语句有返回值,Grails 1.2用的是Groovy 1.6,支持这样子

或者直接写return [productsInstanceList: ...]也可以
copoplar 2009-09-03
JohnnyJian 写道
用Grails 1.2
Grails 1.1用Groovy 1.5,不支持if语句有返回值,Grails 1.2用的是Groovy 1.6,支持这样子

或者直接写return [productsInstanceList: ...]也可以



没有的事,条件语句之前先定义变量,内部赋值,返回一个变量就可以嘛!
Global site tag (gtag.js) - Google Analytics