如何让Grails不转义CK编辑器生成的html标记



这个问题是在2012年提出并回答的。不幸的是,这些答案都不适用于Grails 3.3.8和Fields插件。我尝试了${raw(value(}和我能找到的任何东西。它仍然显示类似<b>你好<b>lt;em>世界<em>{raw(value(}在最新的Grails文档中推荐使用

我被卡住了,任何想法我都会感激的。

好吧,这就是如何做到的:首先,你需要Unescape。将其添加到build.gradle:

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

接下来执行grails创建标签库Unescape。这是你的整个标签库类:

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是字段的名称。在目录"description"中创建一个名为_displayWidget.gsp的文件

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

对值调用原始函数将返回一个org.grails.taglib.TagBodyClosure对象,该对象将传递给您的标签库。这就是为什么您必须对主体进行调用,并将结果转换为标记库中的String。

如果知道如何实现,这很容易实现,但找到如何实现并不容易。文件不好。Fields插件确实让事情复杂了很多。在Fields之前,这很容易做到。

相关内容

  • 没有找到相关文章

最新更新