Grails 3:自定义标签输出显示为前端的字符串

时间:2017-09-28 07:29:42

标签: groovy grails3

我在我的应用程序中创建了一个自定义标记lib类,如下所示。

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

            attrs.from = myservice.invokeMethod(servMethod,null);

            out << g.select( attrs )
        }catch(Exception e){
            println("Exception in CustomTagLib in method selectList:"+e)
        }
    }
}

但输出显示为字符串,如下所示。 enter image description here

请提出任何解决此问题的建议。

1 个答案:

答案 0 :(得分:1)

您可以尝试将渲染代码添加到模板中,例如

def from = myservice.invokeMethod(servMethod,null);

out << render( template: "/templates/dropdown",
         model: [from: from] )

然后在/views/templates/_dropdown.gsp

<g:select from="${from}" />

您当然可以向模型传递更多参数。