Html delegate.replace()不适用于数组列表Grails 2.3.8
以下是替换HTML标记的代码:Html delegate.replace()不适用于数组列表Grails 2.3.8,html,arrays,grails,tags,Html,Arrays,Grails,Tags,以下是替换HTML标记的代码: def str String.metaClass.removeHtml { def removeThisHtml = [ [htmlCode: "`", value: "`"], [htmlCode: "@", value: "@"], [htmlCode: "&", value: "&"], [htmlCo
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 str
String.metaClass.removeHtml{
def removeThisHtml=[
[htmlCode:`;”,值:“`”],
[htmlCode:@;”,值:@“],
[htmlCode:“&;”,值:“&”],
[htmlCode:\;”,值:“\\”,
[htmlCode:”,值:“]”,
[htmlCode:';”,值:“”,
[htmlCode:,值:“”]
]
removeThisHtml.each{element->
str=delegate.replace(element.htmlCode,element.value)
}
返回str
}
这是我的控制器的代码:
def getProjectLists() {
def currentUser = springSecurityService.currentUser
def kups = ([['name':'<b>Sample 1</b>'.removeHtml()],['name':'<b>Sample 2</b>']])
render kups as JSON
}
def getprojectlist(){
def currentUser=springSecurityService.currentUser
def kups=([['name':'Sample 1'.removeHtml()],['name':'Sample 2']]
将kups呈现为JSON
}
我的预期产出是:
样本1样本2
但结果是:
Sample1Sample2我认为您真正想要的是转义HTML-显示HTML标记和实体,因此函数名
removeHtml
有点误导,转义HTML
更适合它
一般来说,我建议不要自己做这样的事情,因为别人已经做了,而且很可能做得更好
例如,apachecommons有一个StringEscapeUtils.escapeHtml
方法
String.metaClass.removeHtml {
return org.apache.commons.lang.StringEscapeUtils.escapeHtml(delegate)
}
在这种情况下,正常的字符串替换函数应该可以工作,谢谢Lars,但是我需要在后端部分使用这个替换函数。Grails 2.3.8哦,对不起,我没有看到“Grails”标记。。。您可能希望在问题中包含所使用的技术抱歉,谢谢您的提示。您正在查找以下内容:
String.metaClass.removeHtml{return org.apache.commons.lang.StringEscapeUtils.escapeHtml(delegate)}
?