【问题标题】:delegate.replace() is not working on Array List Grails 2.3.8delegate.replace() 不适用于 Array List Grails 2.3.8
【发布时间】:2018-06-29 07:48:44
【问题描述】:

这是我用来替换 HTML 标签的代码:

  def str
  String.metaClass.removeHtml {
      def removeThisHtml = [
         [htmlCode: "`",  value: "`"], 
         [htmlCode: "@",  value: "@"], 
         [htmlCode: "&",  value: "&"],
         [htmlCode: "\",  value: "\\"],
         [htmlCode: """, value: '"'], 
         [htmlCode: "'",  value: "'"], 
         [htmlCode: "&lt;",   value: "<"],
         [htmlCode: "&gt;",   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  
}

我的预期输出是:

Sample1 Sample2

但是输出是:

样本1 样本2

【问题讨论】:

  • 在这种情况下,正常的字符串替换功能应该可以工作developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • 感谢 Lars,但我的后端需要这个替换功能。 Grails 2.3.8
  • 抱歉,我没有看到“grails”标签...您可能希望在问题中包含使用过的技术
  • 抱歉,谢谢您的提示。
  • 你在找这个吗:String.metaClass.removeHtml { return org.apache.commons.lang.StringEscapeUtils.escapeHtml(delegate) }?

标签: html arrays grails tags


【解决方案1】:

我认为您真正想要的是转义 HTML - 显示 HTML 标记和实体,因此函数名称 removeHtml 有点误导,escapeHtml 更适合它。

一般来说,我建议不要自己做这样的事情,因为其他人已经这样做了,而且很可能做得更好。

例如 Apache Commons 有一个 StringEscapeUtils.escapeHtml 方法。

String.metaClass.removeHtml { 
    return org.apache.commons.lang.StringEscapeUtils.escapeHtml(delegate) 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 2015-04-06
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多