Класс домена не доступен в моем контроллере - PullRequest
0 голосов
/ 04 апреля 2011

Я новичок в Grails и заводной ..
Я создал домен класса

\grails-app\domain\Abc

Теперь я создал контроллер в

\grails-app\controllers\myapp\myController

В этом, когда я создал объект, он показывает ошибку.

def Abc obj = new Abc

Я получил ошибку

unable to resolve class Abc 

Я пытался импортировать, но там тоже не показывался. Я работаю в Grails 1.3.7 и IntelliJ IDEA 10.0.2
Спасибо

Ответы [ 2 ]

3 голосов
/ 04 апреля 2011

Убедитесь, что расположение каждого класса соответствует объявлению класса и пакета.

Я создал домен класса

\ Grails-приложение \ домен \ Abc

Этот класс должен выглядеть следующим образом

class Abc {
    // implementation omitted
}

убедитесь, что у вас нет объявления пакета, потому что в зависимости от местоположения этот класс должен быть в пакете по умолчанию (что на самом деле является плохой практикой). В идеале вы должны поместить этот класс в пакет, а затем переместить исходный файл в подкаталог \grails-app\domain, соответствующий имени пакета.

Теперь я создал контроллер в

\ Grails-приложение \ Контроллеры \ MyApp \ myController

Этот класс должен выглядеть следующим образом

package myapp

class myController {
    // implementation omitted
}

Обратите внимание, что этот класс должен называться в нижнем регистре 'm', потому что так называется файл. Стандартные соглашения о присвоении имен Java / Groovy требуют, чтобы классы начинались с заглавной буквы.

При этом, когда я создал объект, он показывает ошибку.

def Abc obj = new Abc

Есть несколько проблем с этим кодом:

  • определить тип как def или Abc но не оба
  • вам не хватает скобок

Попробуйте вместо этого:

Abc obj = new Abc()
3 голосов
/ 04 апреля 2011

Я думаю, вы создали свой класс домена и класс контроллера вручную. Во-первых, ваш контроллер должен находиться в папке controllers, а не myapp. Во-вторых, вы должны определить пакет для вашего класса домена и класса контроллера, например:

Класс домена:

package myapp

class Book {
...
}

Класс контроллера

package myapp

class BookController {
....
}
...