Grails4从另一个标记库调用具有名称空间的标记库

Grails4从另一个标记库调用具有名称空间的标记库,grails,Grails,如何使用不同于Grails4中另一个标记库的命名空间访问标记库WWW? 我似乎不能交叉呼叫 这里有一个例子 class MyLibTagLib{ static namespace="myLib" def fancy={attrs-> .... } } import app.lib.MyLibTagLib class CallerTagLib{ //in the default 'g' namespace //def myLib //injecti

如何使用不同于Grails4中另一个标记库的命名空间访问标记库WWW? 我似乎不能交叉呼叫

这里有一个例子

 class MyLibTagLib{

  static namespace="myLib"

  def fancy={attrs->
      ....
  }
}

import app.lib.MyLibTagLib
class CallerTagLib{

  //in the default 'g' namespace

  //def myLib //injection fails

  def fancyText={attrs->
      //fails
      out << myLib.fancy(attrs)
      //also fails
      grailsApplication.mainContext.getBean('app.lib.MyLibTagLib')
  }
}

我无法重现你描述的有问题的行为。请参阅上的项目


位于的main index.gsp将调用,并且可以正常工作。

def myLib//injection失败-此处的注入失败,因为没有名为myLib的bean。bean的名称应该是demo.MyLibTagLib,用您的包名替换demo。也就是说,没有充分的理由将一个标记bean注入另一个标记bean.dang。我看到的唯一区别是我的标记库来自两个不同的包。谢谢你的演示。我会看一下,看看有什么不同。如果你能分享一个简单的示例项目,比如我创建的项目,并在该项目中演示这个问题,我很乐意看一看。如果您认为这是框架中的一个bug,请在提交一个问题,我们将解决任何问题。感谢您的反馈。确实是软件包的差异是追踪问题的关键。grails按预期工作,尽管我可能会抱怨groovy的编译时检查。我可能会抱怨groovy的编译时检查-我不知道编译器在这里做什么是不正确的。投诉是什么?感谢您的反馈,我们将对此进行调查。事实上,包裹差异是追踪问题的关键。-我正试图把它追下去,但我做不到。调度后仍然有效。我会继续努力。如果你能分享一个项目来展示这个问题,那将是很有帮助的。如果它坏了,我想把它修好。再次感谢。
package demo

class MyLibTagLib {
    static namespace="myLib"

    def fancy={attrs->
        out << 'Something Fancy'
    }
}
package demo

class CallerTagLib {

    def fancyText = { attrs ->
        out << myLib.fancy(attrs)
    }
}