Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails render XML从同一控制器调用另一个操作_Xml_Grails - Fatal编程技术网

Grails render XML从同一控制器调用另一个操作

Grails render XML从同一控制器调用另一个操作,xml,grails,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) firs

我正在研究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

我试着使用“delegate”(似乎那里的委托就是控制器本身),我也试着引用像“patient”{…}这样的节点,但是每次都调用getPatient


有没有一种方法可以在不更改getPatient action name的情况下使这个XML渲染工作

我很惊讶
patient
周围的引用不起作用

答案不是
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)
                }
            }
        }
    }
}