0

Grails の奇妙な動作に夢中になっています。

ドメインクラスのユーザーを取得します:

class User {

    String firstName
    String token
    List roles = [] as List

    static constraints = {
    }
}

BootStrap.groovy を次のように変更して、5 つのユーザー インスタンスを設定します。

class BootStrap {

    def init = { servletContext ->
        switch (Environment.getCurrent()) {
            case 'DEVELOPMENT':
                def user1 = new User(
                    id: 1,
                    firstName: 'Enricot',
                    token: 'L\'abricot'
                )
                user1.roles.add('ROLE_USER')
                user1.save(failOnError: true)
                def user2 = new User(
                    id: 2,
                    firstName: 'Arnaud',
                    token: 'Dauphin')
                user2.roles.add('ROLE_USER')
                user2.roles.add('PERM_WRITE')
                user2.save(failOnError: true)
                def user3 = new User(
                    id: 3,
                    firstName: 'Magalie',
                    token: 'La banane')
                user3.roles.add('ROLE_USER')
                user3.roles.add('PERM_READ')
                user3.save(failOnError: true)
                def user4 = new User(
                    id: 4,
                    firstName: 'Jeremy',
                    token: 'Wistiti')
                user4.roles.add('ROLE_USER')
                user4.roles.add('ROLE_ADMIN')
                user4.save(failOnError: true)
                def user5 = new User(
                    id: 5,
                    firstName: 'Jimini',
                    token: 'Criquet')
                user5.roles.add('ROLE_USER')
                user5.roles.add('ROLE_INTERACTIONS')
                user5.save(failOnError: true)
                break
            case "test":
                DataBuilder.init()
                break
        }
    }
    def destroy = {
    }
}

私のコントローラーでは、1 人のユーザーを取得すると、リストを除くすべてのフィールドが正しくなります。

私が行った場合 :

def user = User.get(1)
println user.firstName // Output is "Enricot"
println user.token // Output is "L'abricot"
println user.roles // Output is "[]" and not "[ROLE_USER]"

このようにオブジェクトを移入しようとしても、私の問題は解決しませんでした:

def user1 = new User(
        id: 1,
        firstName: 'Enricot',
        token: 'L\'abricot',
        roles: ['ROLE_USER']).save(failOnError: true)

二重引用符、単純引用符で試してみました。

最も面白い部分は、「user.roles」を BootStrap.groovy に作成しているときに、正しいリストが得られることです。

それは私には意味がありません、どんな助けも大歓迎です、

4

2 に答える 2