【问题标题】:How to get Grails not to escape html tags generated by CK Editor如何让 Grails 不转义 CK 编辑器生成的 html 标签
【发布时间】:2019-04-13 22:27:36
【问题描述】:

这个问题是在 2012 年提出并回答的。不幸的是,没有一个答案适用于 Grails 3.3.8 和 Fields 插件。我尝试了 ${raw(value)} 以及我能找到的任何东西。它仍然显示 Hello world 之类的内容。在此处的最新 Grails 文档中推荐使用 ${raw(value)}

我被困住了,我会感激任何想法。

【问题讨论】:

    标签: grails ckeditor gsp


    【解决方案1】:

    好的,这是如何做到的: 首先,您需要 Unbescape。将此添加到 build.gradle:

    编译 "org.unbescape:unbescape:1.1.6.RELEASE" // 到 unbescape html

    接下来执行 grails create-tag-lib Unbescape。这是你的整个标签库类:

        import org.unbescape.*
        import org.unbescape.html.*
    
        class UnbescapeTagLib {
    
            static defaultEncodeAs = [taglib:'text']
            //static encodeAsForTags = [tagName: [taglib:'html'], otherTagName: [taglib:'none']]
            static final namespace = 'ubs'
    
            def unescape = {attrs, body ->
                out << HtmlEscape.unescapeHtml(body.call().toString())
            }
        }
    

    现在创建一个名为“show”的目录,并在其中创建一个名为“description”的目录。这当然是在特定域对象的视图目录中。描述是字段的名称。在目录 'description' 中创建一个名为 _displayWidget.gsp 的文件。这是文件的样子:

        <ubs:unescape>${raw(value)}</ubs:unescape>
    

    在 value 上调用原始函数会返回一个 org.grails.taglib.TagBodyClosure 对象,该对象将传递给您的标签库。这就是为什么你必须调用 body 并将结果转换为标签库中的字符串。

    如果一个人知道怎么做,这很容易实现,但要知道怎么做并不容易。文档不好。 Fields 插件确实使事情复杂了很多。在 Fields 之前,这很容易做到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-07
      • 1970-01-01
      • 2018-07-07
      • 2018-07-02
      • 2012-07-14
      • 2013-03-30
      • 2021-03-31
      • 1970-01-01
      相关资源
      最近更新 更多