2012-02-16 16 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