2017-09-28 3 views
0

Je souhaite obtenir un bean de service à partir du contexte de l'application dans ma bibliothèque de balises personnalisée. Le nom du service je l'obtiendra de l'attribut de balise personnalisé.Comment obtenir un bean de service dans une classe de bibliothèque de balises personnalisée dans Grails 3

Ceci est le code que j'ai précédemment utilisé.

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) 
     } 
    } 
} 

Ce code est moi a travaillé pour la version 2.3 Grails mais pas pour la version 3. S'il vous plaît aidez-moi à trouver une solution.

Répondre

0

les opérations suivantes:

import grails.util.Holders 

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

Où NomServeur serait votre nom de service avec la première lettre minuscule & cas de chameau pour le reste

+0

de travail, j'ai oublié le cas de la lettre. Maintenant, les deux fonctionnent, mais la balise est montrée dans le front comme une chaîne comme '