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 に作成しているときに、正しいリストが得られることです。
それは私には意味がありません、どんな助けも大歓迎です、