Grails渲染XML从同一个控制器

时间:2015-11-27 15:23:28

标签: xml grails

我正在研究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动作名称

1 个答案:

答案 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}}