gpt4 book ai didi

java - Grails 3 taglib静态编译

转载 作者:行者123 更新时间:2023-12-02 02:43:46 39 4
gpt4 key购买 nike

我尝试将 @GrailsCompileStatic 应用于 taglib 并收到以下错误:

Error:(19, 16) Groovyc: [Static type checking] - Cannot find matching method com.tempvs.image.MyTagLib#render(java.util.LinkedHashMap ). Please check if the declared type is right and if the method exists.

代码示例:

@GrailsCompileStatic
class MyTagLib {
...
String myTag = { Map attrs ->
...
out << render(template: '/templates/myTemplate', model: [...])
}
}

我做错了什么以及如何解决这个问题?

最佳答案

您正在使用一些动态功能,因为标签库通常会使用它们。从某种意义上说,即使只是调用“渲染”也是动态的。

如果您确实愿意,可以通过注入(inject) PageRenderer 并使用它来渲染页面,然后输出生成的 HTML 来解决此问题。我不确定这是否值得,但我当然不知道您的性能要求!

示例:

import grails.compiler.GrailsCompileStatic
import grails.gsp.PageRenderer

@GrailsCompileStatic
class StaticTestTagLib {

static namespace = "staticTest"

PageRenderer groovyPageRenderer

String myTag = { Map attrs ->
out << groovyPageRenderer.render(template: '/templates/myTemplate', model: [...])

}
}

这是可行的,但是如果您的标记库正在执行任何远程复杂的操作,您将需要做一些工作,因为每次对渲染的调用或任何其他标记都必须被静态编译的调用替换。这是可能的,但可能没有多大好处。

关于java - Grails 3 taglib静态编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44990311/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com