2014-07-25 3 views
0

Мне требуется добавить Spring Security core в Grails. Я добавил плагин безопасности весной ядро ​​до Граалей 2.3.8 приложения, с помощью: BuildConfig.groovy плагинов { ... компиляции ": весна-безопасности ядра: 2,0-RC4" ...Groovy: неожиданный токен при использовании плагина ядра Grails и Spring.

затем s2-Quickstart сим GUser GRole

файл GUserGRole.groovy содержит следующие ошибки:

Groovy: неожиданный маркер: валидатор @ линия 82, колонка 9. несколько маркеров на этой линии - Groovy : ожидат тин EOF, нашел 'если' @ линия 83, колонка 4. - Groovy: неожиданный маркер: если @ строка 83, столбец 4.

, который соответствует следующему коду:

static constraints = { 
    GRole validator: { GRole r, GUserGRole ur -> 
     if (ur.GUser == null) return 
     boolean existing = false 
     GUserGRole.withNewSession { 
      existing = GUserGRole.exists(ur.GUser.id, r.id) 
     } 
     if (existing) { 
      return 'userRole.exists' 
     } 
    } 
} 

Как можно ли это решить? Как я могу добавить весовое ядро ​​Spring Grails ??

+0

Этот код не имеет для меня большого смысла. Что именно вы пытаетесь сделать с этим? – rmlan

+0

Показанный код создается автоматически при запуске быстрого запуска после установки плагина безопасности. –

+0

Такая же проблема с Grails 2.4.4 и пружинным сердечником: 2.0-RC3/RC4 с IDEA 14. – bel

ответ

0

Один выпуск - GRole validator. Дело до validator должно быть именем свойства, которое ограничено, а не типом. Если свойство называется gRole, тогда код должен быть gRole validator. Действительно ли свойство называется GRole? Это может быть проблематично, если это так.

+0

После установки плагина безопасности весов я запускал быстрый запуск, чтобы инициализировать плагин. GRole, наряду с GUser, был создан как имя свойства в GUserGRole. У меня создалось впечатление, что с Grails 2 было очень просто установить плагин весеннего ядра безопасности? –

1

s2quick-start использует GrailsNameUtils.getPropertyNameRepresentation для создания полей экземпляра для ваших классов домена. Используйте имя, которое будет генерировать подходящее имя поля, иначе имя поля и имя класса будут одинаковыми.

//This is fine - generates 'user' 
GrailsNameUtils.getPropertyNameRepresentation("User") 

//This is fine - generates 'myUser' 
GrailsNameUtils.getPropertyNameRepresentation("MyUser") 

//Not fine. Generates 'GRole' which is same as your class name 
GrailsNameUtils.getPropertyNameRepresentation("GRole") 
0

Пожалуйста, обсудите здесь Groovy: Unexpected token ":"?

Поскольку код сгенерирован автоматически, вы должны вручную исправить имена переменных класса и изменить его как «GRole GRole» на «GRole gRole».

Смежные вопросы