2012-02-16 19 views
0

我有鉴于这样的的Grails GSP视图不会输出变量

<?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> 

,你可以看到,服务名称变量不是元素名称替换内与命名空间。我试图用几种方法来破解它,比如传递整个ns:servicename作为变量,但没有任何帮助,总会有一些不良的副作用。我怎样才能做到这一点?我只是想更换变量,无需额外的验证/处理...

+1

请在您的控制器中显示如何调用'render'。它可能是一个错字(例如'serviceName')? – ccheneson 2012-02-16 10:46:50

+0

[result:rs,servicename:service.name,parameters:service.getOutputParameters()]不能作为拼写错误 - 它可以工作,如果我把它放在标签 – 2012-02-16 11:07:08

+0

之外,如果它是一个错字,那么$ {servicename}在这个地方语法)只会呈现为 2012-02-16 11:12:31

回答

1
<?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> 
+0

谢谢我尝试过类似的东西,现在我试过这个确切的解决方案,但问题是现在它省略了xml定义的第一行(不知道为什么)以及删除空行(尽管我使用<%=“”“”<?xml version =“1.0”encoding =“UTF-8”>>这个实际上会略微有益) – 2012-02-16 11:38:32

+0

?>“ “”%>,没有帮助 – 2012-02-16 11:48:31

+1

好吧,所以它的工作原理是其他地方的问题:) – 2012-02-16 13:10:51