我正在尝试使用 Config.groovy 中的构建器语法绘制网站的导航结构,如下所示:
com.foo.demo.siteStructure = NodeBuilder.newInstance().site() {
item(controller: 'sample', action: 'list')
item(controller: 'address', action: 'list') {
item(controller: 'city', action: 'list', title: 'Municipality')
}
}
这在调试器中产生的对象是:
site[attributes={}; value=[item[attributes={controller=sample, action=list}; value=[]], item[attributes={controller=city, action=list, title=Municipality}; value=[]]]]
所以它似乎只深入了一层,并用它包含的一项替换了第二项。
如果我预先定义一个 Item 对象并使用,我会得到相同的单层嵌套ObjectGraphBuilder
:
class Item {
String controller
String action
String title
SiteNode parent
List<Item> items = []
}
因此,看起来 ConfigSlurper 以某种方式破坏了结果。有没有更好的方法将嵌套结构标记为配置值?