2015-04-16 3 views
1

В Grails сервисы по умолчанию являются одиночными. Могу ли я сохранить его таким образом и создать экземпляр внутреннего класса этой службы с контроллера?Grails создает экземпляр внутреннего класса обслуживания

//by default grails makes MyTestService a singlton 
class MyTestService{ 

    public class InnerTest{ 
      String msg; 
      def addMsg(String str){ 
       this.msg=str; 
      } 
      def printMsg(){ 
      println this.msg; 
     } 
    } 

} 

В контроллере "MyController" ...

def m=myTestService.getInstance().new InnerTest(); 
//produces " MyTestService.InnerTest cannot be cast to MyTestService.InnerTest" 

def m=myTestService.new InnerTest(); 
//No signature of method:MyController.InnerTest() 
+0

yep ошибки, которые он производит, находятся в комментариях к коду. Невозможно ли исключить ошибку из-за одноэлементности службы? – user2782001

ответ

1

Вы должны быть в состоянии сделать что-то вроде:

class MyTestService{ 

    public class InnerTest{ 
      String msg; 
      def addMsg(String str){ 
       this.msg=str; 
      } 
      def printMsg(){ 
      println this.msg; 
     } 
    } 

    def InnerTestFactory() { 
     new InnerTest() 
    } 

} 

и использовать его из контроллера:

def m=myTestService.InnerTestFactory(); 
+0

Я проверю его прямо сейчас .... – user2782001

+0

все равно получить «Нет сигнатуры метода: MyTestService.InnerTest()», используя подход InnerTestFactory – user2782001

+0

статический класс тоже не работал. – user2782001

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