【问题标题】:Grails create instance of inner class of serviceGrails 创建内部服务类的实例
【发布时间】:2015-04-16 23:46:17
【问题描述】:

在 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() 

【问题讨论】:

  • 是的,它产生的错误在代码 cmets 中。由于服务的单例性质,无法转换错误吗?

标签: grails grails-controller grails-services


【解决方案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();

【讨论】:

  • 使用 InnerTestFactory 方法仍然得到“方法没有签名:MyTestService.InnerTest()”
  • 好的,使用 InnerTestFactory 方法,不要使用this,只使用new InnerTest()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-03
相关资源
最近更新 更多