【发布时间】:2012-02-16 10:33:59
【问题描述】:
我有这样的看法
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:${servicename}Response xmlns:ns2="http://ws/">
<g:each in="${result}" var="record">
<return>
<g:each in="${parameters}" var="parameter">
<${parameter.name}>${record[parameter.name]}</${parameter.name}>
</g:each>
</return>
</g:each>
</ns2:${servicename}Response>
</S:Body>
</S:Envelope>
它呈现如下:
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:${servicename}Response xmlns:ns2="http://ws/">
<return>
<column1>updated</column1>
<column2>update</column2>
<id>1</id>
</return>
</ns2:${servicename}Response>
</S:Body>
</S:Envelope>
如您所见,servicename 变量不会在元素名称内部替换为命名空间。我试图破解它几种方法,比如将整个 ns:servicename 作为变量传递,但没有任何帮助,总是有一些不良副作用。我怎样才能做到这一点?我只想替换变量而不需要额外的验证/处理......
【问题讨论】:
-
请说明您如何在控制器中调用
render。会不会是错字(例如serviceName)? -
[result: rs, servicename: service.name, parameters: service.getOutputParameters()] 不能是错字——如果我把它放在标签外面就可以了
-
如果是拼写错误,那么 ${servicename} (在这个地方的语法是否正确)只会呈现为