5

我正在开发一个 grails 应用程序,并且我已经有一个域类“ExtendedUser”,其中包含有关用户的信息,例如:“name”、“bio”、“birthDate”。现在我打算对用户的年龄进行统计,所以我创建了另一个控制器“StatisticsController”,想法是将所有出生日期存储在本地数组中,这样我就可以用它管理多个计算

class StatisticsController {
//    @Secured(["ROLE_COMPANY"])
    def teststat(){
        def user = ExtendedUser.findAll()   //A list with all of the users
        def emptyList = []    //AN empty list to store all the birthdates
        def k = 0
        while (k<=user.size()){
            emptyList.add(user[k].birthDate) //Add a new birthdate to the emptyList (The Error)
            k++
        }
        [age: user]
    }
}

当我测试时,它向我显示此错误消息:Cannot get property 'birthDate' on null object 所以我的问题是如何将所有生日存储在单个数组或列表中的最佳方法,以便我可以使用它进行计算。谢谢

4

3 回答 3

11

我更喜欢 .each() 尽可能在 groovy 中。在此处阅读有关 groovy 循环的信息。

为此,请尝试以下操作:

user.each() {
    emptylist.push(it.birthdate) //'it' is the name of the default iterator created by the .each()
}

我没有在这台计算机上设置 grails 环境,所以它就在我的脑海中,没有经过测试,但试一试。

于 2013-06-21T22:45:50.410 回答
4

我会使用这种方法:

def birthDates = ExtendedUser.findAll().collect { it.birthDate }

collect方法转换集合的每个元素并返回转换后的集合。在这种情况下,用户被转换成他们的出生日期。

于 2013-06-22T02:12:07.667 回答
0

你能试一下吗:

List dates = ExtendedUser.findAll().birthDate
于 2013-06-21T22:34:52.007 回答