2017-09-28 43 views
0

我想從自定義標記庫中的應用程序上下文中獲取服務bean。服務名稱我會從自定義標籤屬性中獲取。如何在Grails 3中的定製標記庫類中獲取服務bean

這是我以前使用的代碼。

class CustomTagLib { 
    static defaultEncodeAs = [taglib:'html'] 
    //static encodeAsForTags = [tagName: [taglib:'html'], otherTagName: [taglib:'none']] 
    def selectList = { attrs -> 
     try{ 
      String servName=attrs.service 
      String servMethod=attrs.method 
      ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(session.getServletContext()) 
      def myservice=ctx."${servName}" 

      attrs.from = myservice.invokeMethod(servMethod,null); 
      out << g.select(attrs) 
     }catch(Exception e){ 
      println("Exception in CustomTagLib in method selectList:"+e) 
     } 
    } 
} 

此代碼是我工作Grails的2.3版本,但不是版本3. 請幫我找出一個解決方案。

回答

0

嘗試以下操作:

import grails.util.Holders 

def myservice = Holders.getApplicationContext().getBean(servName) 

凡servName將與首字母小寫&駱駝情況下,其餘

+0

工作服務的名字,我忘了字母大小寫。現在兩者都在工作,但標籤在前端顯示爲一個字符串,例如'