这是我的代码,用于替换HTML标签:
def str
String.metaClass.removeHtml {
def removeThisHtml = [
[htmlCode: "`", value: "`"],
[htmlCode: "@", value: "@"],
[htmlCode: "&", value: "&"],
[htmlCode: "\", value: "\\"],
[htmlCode: """, value: '"'],
[htmlCode: "'", value: "'"],
[htmlCode: "<", value: "<"],
[htmlCode: ">", value: ">"]
]
removeThisHtml.each { element ->
str = delegate.replace(element.htmlCode, element.value)
}
return str
}
这是我的控制器的代码:
def getProjectLists() {
def currentUser = springSecurityService.currentUser
def kups = ([['name':'<b>Sample 1</b>'.removeHtml()],['name':'<b>Sample 2</b>']])
render kups as JSON
}
我的预期输出是:
样本1 / b> 样本2
但是输出是:
样品1 样品2
答案 0 :(得分:0)
我认为您真正想要的是转义HTML-显示HTML标签和实体,因此该函数的名称removeHtml
有点误导,escapeHtml
会更适合。
通常,我建议您不要自己做这样的事情,因为其他人已经做到了,并且很有可能做得更好。
例如 Apache Commons 具有StringEscapeUtils.escapeHtml
方法。
String.metaClass.removeHtml {
return org.apache.commons.lang.StringEscapeUtils.escapeHtml(delegate)
}