Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc 在SpringMVC中使用groovy模板_Spring Mvc_Groovy_Spring Boot - Fatal编程技术网

Spring mvc 在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" 由于某种原因,这不起作

我正在SpringMVC项目中试用groovy模板,遇到了一些问题。我的控制器正在返回一个
对象,该对象具有一些基本属性,如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.RELEASE
author.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