微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Scala / Java servlet:如何在HTML代码中输出<而不是<

我有一个Scala编写的servlet.我在那里有一些这样的代码

def message = <HTML><HEAD><TITLE>Test</TITLE></HEAD><BODY>{value}</BODY></HTML>
def value = "Hello <BR/> World"

为值生成的相应HTML代码

Hello &lt;BR/&gt; World

如何让它生成HTML代码(如下所示)?

Hello <BR/> World

提前致谢

解决方法

如果您不介意将值的类型更改为xml.Elem,则可以执行此操作

def value = <xml:group>Hello <BR/> World</xml:group>

加成

在我看来,你应该尽可能多地输入内联XML.只有这样,您才能对输入进行编译时验证.所有其他解决方案或者在某些时候给你一个运行时异常(比如说,你忘了一些/),甚至可能会破坏你的XML布局.

但是,如果你真的想要一个简单的转换,你可以这样做:

class XmlString(str: String) {
  def assumeXML = xml.XML.loadString("<xml:group>" + str + "</xml:group>")
  def toUnparsedXML = new xml.Unparsed(str)
}
implicit def stringToXmlString(str: String) = new XmlString(str)

def value = "Hello <BR/> World"

然后(由于某种原因,它仍然显示< xml:group>部分;你可以用xml.NodeSeq.fromSeq(value.assumeXML.child)或类似的东西摆脱它)

def message = <HTML><HEAD><TITLE>Test</TITLE></HEAD><BODY>{value.assumeXML}</BODY></HTML>

甚至(好吧,你不需要隐含在这里,Unparsed(值)会这样做)

def message = <HTML><HEAD><TITLE>Test</TITLE></HEAD><BODY>{value.toUnparsedXML}</BODY></HTML>

如果提供无效的XML,那么assumeXML方法将在运行时失败; toUnparsedXML将接受所有输入,甚至是有潜在危险的数据.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐