1

grails 2.0.4 に基づく私たちのアプリケーションでは、grails の ApplicationTagLib を上書きしました。grails 2.1.0 への移行後、ApplicationTagLib の上書きが機能しなくなりました。私たちの gsp では、返された結果は空です。

以下は、私たちが使用する簡略化された TagLib です。

class CustomizedGrailsTagLib implements ApplicationContextAware {
  // grails native taglib classes
  def applicationTagLib

  void setApplicationContext(ApplicationContext applicationContext) {
    applicationTagLib = applicationContext.getBean('org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib')
  }

  def createLink = { attrs ->
    // call native create link after modifications
    def link = applicationTagLib.createLink.call(attrs)
    return link
  }
}

デバッグすると、変数リンクに正しい値が含まれていることがわかります (例: /enterprise20/user/showImage/7)。しかし、その後の gsp では、出力は空です。

GSP コール:

${createLink(controller:'user', action:'showUser', id: userInstance.id)}
4

1 に答える 1

1

値を返すのではなく、次のように書き込んでみてくださいout

def createLink = { attrs ->
  // call native create link after modifications
  def link = applicationTagLib.createLink.call(attrs)
  out << link
}
于 2012-08-02T16:43:45.047 に答える