在2012年提出并回答了这个问题。不幸的是,Grails 3.3.8和Fields插件都无法使用这些答案。我尝试了$ {raw(value)}和我能找到的任何东西。它仍然显示 Hello world 之类的内容。建议在此处使用最新的Grails文档中的$ {raw(value)}我被困住了,将不胜感激任何想法。 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 好的,这是这样的:首先,您需要Unbescape。将此添加到build.gradle中: compile "org.unbescape:unbescape:1.1.6.RELEASE" // to unbescape html接下来,执行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”的目录。当然,这是在您的views目录中的特定域对象。描述是字段的名称。在“描述”目录中,创建一个名为_displayWidget.gsp的文件。该文件如下所示: <ubs:unescape>${raw(value)}</ubs:unescape>对value调用raw函数会返回一个org.grails.taglib.TagBodyClosure对象,该对象将传递给您的标签库。这就是为什么您必须对主体进行调用并将结果转换为标签库中的String的原因。如果知道如何做到这一点,就很容易实现,但是要找到实现的方法并不容易。该文档不是很好。 Fields插件确实使事情变得非常复杂。在Fields之前,这很容易做到。 (adsbygoogle = window.adsbygoogle || []).push({});
09-26 02:39