2011-07-05 103 views
2

我在我的應用程序中使用了Grails Jasper報告插件。我試圖將一系列Expandos綁定到我的報告模板。是否可以將一組Groovy Expandos綁定到碧玉報告?

我Expando的是建立如下

def calendarTask = new Expando() 
calendarTask.title = task.name 
calendarTask.date = new Date() 
data.add(calendarTask) 

我然後綁定集合在我的控制器

chain(controller:'jasper', action:'index', model:[data:data], params:params) 

我在報告中已經稱爲一個字段「標題」(字符串類型)中定義我的報告模板。當我嘗試運行這個報告時,我得到下面的例外。您可以將Groovy Expando集合綁定到jasper報告嗎?

java.lang.NoSuchMethodException:階級 '類groovy.util.Expando'

在 org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java 未知屬性 '標題' :1313)

在 org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:762)

在 有機apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:837)

+0

*我得到下面的例外... * - 認爲你忘記了一些東西;-) –

+0

哈哈,當然了!它現在在那裏:-) – tinny

回答

2

我寫了一個快速測試腳本,它給了同樣的錯誤

@Grapes(
    @Grab(group='commons-beanutils', module='commons-beanutils', version='1.8.3') 
) 
import org.apache.commons.beanutils.PropertyUtilsBean 

def calendarTask = new Expando() 
calendarTask.title = { -> 'tim' } 
calendarTask.date = { -> new Date() } 

println new PropertyUtilsBean().getProperty(calendarTask, 'title') 

所以看起來common-beanutilsExpando唐「T發揮好起來......

但是,如果你使用Expando改爲只使用純Map,在打電話的BeanUtils作品,所以你可以嘗試改變你的代碼:

def calendarTask = [ 
    title : task.name, 
    date : new Date(), 
] 
data.add(calendarTask) 
+0

謝謝你現在的工作:-)但是,因爲這是我的代碼庫的第二個領域,有效地「包裝」這個日曆任務數據,我認爲它在我的具體情況下最好的封裝它自己「CalendarTask」類。 – tinny

+0

剛剛檢查過,它可以很好地運行'CalendarTask'類:-)祝你好運! –