How to get Grails not to escape html tags generated by CK Editor










0















This question was asked and answered in 2012. Unfortunately, none of the answers work with Grails 3.3.8 and the Fields plugin. I tried $raw(value) and whatever I could find. It still shows things like <b>Hello </b> <em>world</em>. $raw(value) is recommended in the latest Grails documentation here



I'm stuck and will appreciate any ideas.










share|improve this question


























    0















    This question was asked and answered in 2012. Unfortunately, none of the answers work with Grails 3.3.8 and the Fields plugin. I tried $raw(value) and whatever I could find. It still shows things like <b>Hello </b> <em>world</em>. $raw(value) is recommended in the latest Grails documentation here



    I'm stuck and will appreciate any ideas.










    share|improve this question
























      0












      0








      0








      This question was asked and answered in 2012. Unfortunately, none of the answers work with Grails 3.3.8 and the Fields plugin. I tried $raw(value) and whatever I could find. It still shows things like <b>Hello </b> <em>world</em>. $raw(value) is recommended in the latest Grails documentation here



      I'm stuck and will appreciate any ideas.










      share|improve this question














      This question was asked and answered in 2012. Unfortunately, none of the answers work with Grails 3.3.8 and the Fields plugin. I tried $raw(value) and whatever I could find. It still shows things like <b>Hello </b> <em>world</em>. $raw(value) is recommended in the latest Grails documentation here



      I'm stuck and will appreciate any ideas.







      grails ckeditor gsp






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 10 '18 at 16:49









      Chris MalanChris Malan

      7617




      7617






















          1 Answer
          1






          active

          oldest

          votes


















          0














          OK, this is how one does it:
          First, you need Unbescape. Add this to build.gradle:




          compile "org.unbescape:unbescape:1.1.6.RELEASE" // to unbescape html




          Next do grails create-tag-lib Unbescape. Here's your whole tag lib class:



           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())




          Now create a directory called 'show' and inside that a directory called 'description'. This is of course in your views directory for the particular domain object. Description is the name of the field. Inside the directory 'description' create a file called _displayWidget.gsp. This is what the file looks like:



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


          Calling the raw function on value returns a org.grails.taglib.TagBodyClosure object which is passed to your tag lib. That's why you have to do a call on the body and turn the result to a String in your tag lib.



          This is easy to implement if one knows how to do it, but finding out how to do it was not easy. The documentation is not good. The Fields plugin really complicated things a lot. Before Fields, this was easy to do.






          share|improve this answer






















            Your Answer






            StackExchange.ifUsing("editor", function ()
            StackExchange.using("externalEditor", function ()
            StackExchange.using("snippets", function ()
            StackExchange.snippets.init();
            );
            );
            , "code-snippets");

            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "1"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













            draft saved

            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53241186%2fhow-to-get-grails-not-to-escape-html-tags-generated-by-ck-editor%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            OK, this is how one does it:
            First, you need Unbescape. Add this to build.gradle:




            compile "org.unbescape:unbescape:1.1.6.RELEASE" // to unbescape html




            Next do grails create-tag-lib Unbescape. Here's your whole tag lib class:



             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())




            Now create a directory called 'show' and inside that a directory called 'description'. This is of course in your views directory for the particular domain object. Description is the name of the field. Inside the directory 'description' create a file called _displayWidget.gsp. This is what the file looks like:



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


            Calling the raw function on value returns a org.grails.taglib.TagBodyClosure object which is passed to your tag lib. That's why you have to do a call on the body and turn the result to a String in your tag lib.



            This is easy to implement if one knows how to do it, but finding out how to do it was not easy. The documentation is not good. The Fields plugin really complicated things a lot. Before Fields, this was easy to do.






            share|improve this answer



























              0














              OK, this is how one does it:
              First, you need Unbescape. Add this to build.gradle:




              compile "org.unbescape:unbescape:1.1.6.RELEASE" // to unbescape html




              Next do grails create-tag-lib Unbescape. Here's your whole tag lib class:



               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())




              Now create a directory called 'show' and inside that a directory called 'description'. This is of course in your views directory for the particular domain object. Description is the name of the field. Inside the directory 'description' create a file called _displayWidget.gsp. This is what the file looks like:



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


              Calling the raw function on value returns a org.grails.taglib.TagBodyClosure object which is passed to your tag lib. That's why you have to do a call on the body and turn the result to a String in your tag lib.



              This is easy to implement if one knows how to do it, but finding out how to do it was not easy. The documentation is not good. The Fields plugin really complicated things a lot. Before Fields, this was easy to do.






              share|improve this answer

























                0












                0








                0







                OK, this is how one does it:
                First, you need Unbescape. Add this to build.gradle:




                compile "org.unbescape:unbescape:1.1.6.RELEASE" // to unbescape html




                Next do grails create-tag-lib Unbescape. Here's your whole tag lib class:



                 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())




                Now create a directory called 'show' and inside that a directory called 'description'. This is of course in your views directory for the particular domain object. Description is the name of the field. Inside the directory 'description' create a file called _displayWidget.gsp. This is what the file looks like:



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


                Calling the raw function on value returns a org.grails.taglib.TagBodyClosure object which is passed to your tag lib. That's why you have to do a call on the body and turn the result to a String in your tag lib.



                This is easy to implement if one knows how to do it, but finding out how to do it was not easy. The documentation is not good. The Fields plugin really complicated things a lot. Before Fields, this was easy to do.






                share|improve this answer













                OK, this is how one does it:
                First, you need Unbescape. Add this to build.gradle:




                compile "org.unbescape:unbescape:1.1.6.RELEASE" // to unbescape html




                Next do grails create-tag-lib Unbescape. Here's your whole tag lib class:



                 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())




                Now create a directory called 'show' and inside that a directory called 'description'. This is of course in your views directory for the particular domain object. Description is the name of the field. Inside the directory 'description' create a file called _displayWidget.gsp. This is what the file looks like:



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


                Calling the raw function on value returns a org.grails.taglib.TagBodyClosure object which is passed to your tag lib. That's why you have to do a call on the body and turn the result to a String in your tag lib.



                This is easy to implement if one knows how to do it, but finding out how to do it was not easy. The documentation is not good. The Fields plugin really complicated things a lot. Before Fields, this was easy to do.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 11 '18 at 7:13









                Chris MalanChris Malan

                7617




                7617



























                    draft saved

                    draft discarded
















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53241186%2fhow-to-get-grails-not-to-escape-html-tags-generated-by-ck-editor%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

                    Edmonton

                    Crossroads (UK TV series)