2015-08-27 25 views
3

我有类似下面的模板:防止了Scalatra在HTML页面中逃脱文字

val outMsg = s"${outMap.mkString("<p/>\n")}" 

    if (returnMode.equalsIgnoreCase("HTML")) { 
     response.setContentType("text/html") 
     displayPage("Keywords Query Results:", 
     // <p>Query: {jsonObject.get.toString}</p> 
     <p>Return: 
      {outMsg} 

现在什么被发送到浏览器:

419 iphone (2015-05-01)&lt;p/&gt; 
381 iphone (2015-05-01 Texas)&lt;p/&gt; 
259 iphone (2015-05-01 NY)&lt;p/&gt; 
148 iphone (2015-05-01 Tx)&lt;p/&gt; 
131 iphone (2015-05-01 CA)&lt;p/&gt; 
129 android (2015-05-01 TX)&lt;p/&gt; 

如何指示了Scalatra到“独自离开文本“并按原样发送给浏览器?

更新注意,上面的代码里面DisplayPage - 这显然是不允许的宏/标记。我需要理解示例程序为什么甚至使用displayPage,以及更好的替代方案。

回答

0

的URLEnocding发生由于XML节点,而不是具体到了Scalatra。但是,在scalatra将内容返回给请求者之前,我没有发现如何撤消编码。

1

你能做到全球:

<% escapeMarkup = false %> 

或包装材料的表达:

some text 
${unescape(outMsg)} 
+0

好的我正在尝试。 – javadba

+0

我已更新OP:发送到displayPage的代码不能包含宏扩展。我需要在这里处理流程:示例程序确实使用了displayPage,但之后它被打破了。在得到一些自我教育之后,会再次更新OP。 – javadba