2012-05-30 225 views
1

我一直在互聯網上搜索關於父/子關係的嵌套標籤的文檔,但到目前爲止我一無所獲。我想學習的是,反正是有這樣一個定製的「父」標籤瞭解它的「孩子」Grails嵌套標籤

<mytag:parent source="${somelist}"> 
    <mytag:child column="name" style="padding-left:10px"> 
    </mytag> 
    <mytag:child column="surname" style="padding-left:10px"> 
    </mytag> 
</mytag> 

在這個例子中父標籤獲取集合和孩子通過調用somelist.name打印他們給出列分別爲somelist.surname。我是否必須解析DOM以瞭解有關兒童的信息,或者我可以用「常規」代碼以某種方式接觸到孩子嗎?

回答

5

<mytag:parent>應該將自己的上下文/數據作爲請求範圍屬性(或頁面範圍),將其處理爲<mytag:child>,並在關閉標記上將其刪除。像:

static final CONTEXT = this.class.name 

def parent = { attrs, body -> 
    def data = [ 
     name: 'test 1', 
     surname: 'test 2' // i guess you want to load this values from attr.source 
    ] 
    request.setAttribute(CONTEXT, data) 
    out << body.call() 
    request.removeAttribute(CONTEXT) 
} 


def child = { attrs, body -> 
    def data = request.getAttribute(CONTEXT) 
    out << 'name: ' 
    out << data.name 
    out << 'surname: ' 
    out << data.surname 
} 
+0

這拋出該異常爲類 groovy.lang.MissingMethodException 消息 方法的無簽名:org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestWrapper.removeAttribute()是適用於參數類型:( java.lang.String,java.util.LinkedHashMap)values:[java.lang.Class,[x:1,name:test]]可能的解決方案:removeAttribute(java.lang.String) – ufucuk

+0

當然,嘗試更新版本 –

+0

首先非常感謝您的幫助,但當代碼被稱爲時,此代碼在屏幕上不會顯示任何內容。 – ufucuk