Spring mvc 在SpringMVC中使用groovy模板
我正在SpringMVC项目中试用groovy模板,遇到了一些问题。我的控制器正在返回一个Spring mvc 在SpringMVC中使用groovy模板,spring-mvc,groovy,spring-boot,Spring Mvc,Groovy,Spring Boot,我正在SpringMVC项目中试用groovy模板,遇到了一些问题。我的控制器正在返回一个源对象,该对象具有一些基本属性,如id、名称、目录等,以及一组主题,其中主题是另一个具有某些属性的实体 首先,我尝试将源对象直接嵌入到模型中 return new ModelAndView("views/source", "source", source); 在groovy模板中,我尝试通过 h2 "Source $source.name - $source.directory" 由于某种原因,这不起作
源
对象,该对象具有一些基本属性,如id、名称、目录等,以及一组主题
,其中主题
是另一个具有某些属性的实体
首先,我尝试将源对象直接嵌入到模型中
return new ModelAndView("views/source", "source", source);
在groovy模板中,我尝试通过
h2 "Source $source.name - $source.directory"
由于某种原因,这不起作用。我收到了错误消息
No such property: directory for class: source
因此,它实际上无法识别源对象的适当类型。相反,如果我显式地为模型使用映射并将源对象嵌入映射中,那么我就能够访问模型数据
Map<String,Source> d = new HashMap<String,Source>();
d.put("source", source);
return new ModelAndView("views/source", "d", d);
所以这很奇怪,我必须显式地使用映射,但只要它有效
--
第二个问题是,如果我尝试从模型中的源对象访问一组主题,使用
d.source.subjects.each {
h3 it.name
}
这很好,可以显示主题的名称,但如果我添加另一个html标记,它会像这样运行
div {
d.source.subjects.each {
h3 it.name
}
}
这已经不起作用了,我得到了这个错误
(class: source$_run_closure1_closure2_closure3, method: doCall signature: (Ljava/lang/Object;)Ljava/lang/Object;) Expecting to find array of objects or arrays on stack
几乎就像在它周围放置另一个组件改变上下文一样。如果您能提供帮助,我将不胜感激。对我来说似乎是一个Groovy bug,因此请确保您的类路径上没有任何旧版本。如果您使用getter,比如
source.getDirectory()
,它能工作吗?什么版本的groovy?也许你可以分享一个最小的项目?很抱歉你之前要求的。下面是复制错误的示例项目。我正在使用spring-boot1.1.1.RELEASEauthor.getBooks()
适合我(author.books
不适合)。在我看来,这是一个非常棒的bug(所以如果你想修复它,就向他们开罚单)。
(class: source$_run_closure1_closure2_closure3, method: doCall signature: (Ljava/lang/Object;)Ljava/lang/Object;) Expecting to find array of objects or arrays on stack