我正在研究Grails 2.4.4并采取以这种方式呈现的动作:
def subjects = [...]
render(contentType:"text/xml", encoding:"UTF-8") {
'result' {
'patients' {
subjects.each { person ->
delegate.patient {
uid(person.uid)
firstName(person.firstName)
lastName(person.lastName)
...
}
}
}
...
在同一个控制器上,我有一个'getPatient'动作,并且在处理XML渲染时从该行调用该动作:delegate.patient
我尝试使用“委托”(似乎委托有控制器本身),我也尝试引用像'patient'{...}这样的节点,但每次调用getPatient。
有没有办法让这个XML渲染工作而不改变getPatient动作名称?
答案 0 :(得分:1)
我很惊讶delegate
周围的引文不起作用。
答案是it
而不是it
,你需要引用render(contentType:"text/xml", encoding:"UTF-8") {
'result' {
'patients' {
subjects.each { person ->
it.'patient' {
uid(person.uid)
firstName(person.firstName)
lastName(person.lastName)
}
}
}
}
}
或命名在闭包内传递的参数并使用它。
在这种情况下,{{1}}引用BaseMarkupBuilder类中的内部类(Document)。
{{1}}