gpt4 book ai didi

Grails grailApplication.controllerClasses 按包排序 Controller

转载 作者:行者123 更新时间:2023-12-02 15:13:35 25 4
gpt4 key购买 nike

我有以下代码可以抓取所有 Controller ,对其进行排序,并在 li 标签中输出:

<g:each var="c" in="${grailsApplication.controllerClasses.sort { it.fullName } }">
<li<%= c.logicalPropertyName == controllerName ? ' class="active"' : '' %>>
<g:link controller="${c.logicalPropertyName}">${c.naturalName}</g:link>
</li>
</g:each>

我需要按包过滤 Controller ,即从某个包中抓取 Controller 。

例如:
com.app.module.mars.controller.HelloController
com.app.module.venus.controller.PrintController

如您所见,我正在按模块打包 Controller ,因此 mars 将拥有自己的一组 Controller ,而 venus 将拥有自己的 Controller 。然后在 UI 中,我想使用上面的代码(带有一些过滤器),它将模块显示为主菜单,将它们的 Controller 显示为下拉菜单。

我怎样才能应用这样的过滤器?或者,如果你能引导我朝着正确的方向前进,那就太好了。谢谢。

最佳答案

您可以使用 GrailsClassUtils.isClassBelowPackage() 它将一个类和一个包列表作为参数。所以这应该可以解决问题:

GrailsClassUtils.isClassBelowPackage(c.class, ['com.app.module.mars'])

编辑: grailsApplication.controllerClasses可能会给你一个列表 GrailsClass对象,所以你想使用 c.clazz而不是 c.class
grailsApplication.controllerClasses.each { c ->
GrailsClassUtils.isClassBelowPackage(c.clazz, ['com.app.module.mars'])
}

关于Grails grailApplication.controllerClasses 按包排序 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9475975/

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