我在 Grails 上的 Jasper 报告中有这个问题,我应该显示具有此属性的特定模型的内容
class Schedule {
Subject subject
Room room // another class having only a single property [room:String]
DayOfWeek day //days of the week having only a single property [day:String]
String timeStart
String timeEnd
//constraints
}
class Subject {
Course course
String section
static hasMany = [schedule: Schedule]
// constraints
}
问题是,当我尝试从jasperReport
将要获取的控制器中调用操作时Schedule.list()
,我得到了这个错误作为回报
URI /Portal/jasper/index
Class org.hibernate.LazyInitializationException
Message could not initialize proxy - no Session
这是控制器和视图代码。
// ScheduleController
def report() {
List scheduleList = Schedule.list()
chain(controller:'jasper', action:'index', params:params,
model:[data:scheduleList])
}
//view
<g:jasperReport jasper="schedule_list"
controller="schedule"
action="report"
format="pdf, html"
name="Schedule List"
description=" " />
为了解决这个问题,我尝试使用下面的这个理论来解析域中的属性。但作为回报,报告会返回报告null
中具有正确记录数的所有字段。
List scheduleList = Schedule.list().collect {
[cell:
[it.subject.toString(),
it.room.toString(),
it.day.toString(),
it.timeStart,
it.timeEnd
],id: it.id
]
} as List
这是位于 jasper 报告 [.jrxml] 中的字段名称
<field name="subject" class="java.lang.String"/>
<field name="room" class="java.lang.String"/>
<field name="day" class="java.lang.String"/>
<field name="timeStart" class="java.lang.String"/>
<field name="timeEnd" class="java.lang.String"/>
我该如何解决这个问题?