как отобразить html в grails?

#html #grails #gsp

#HTML #grails #gsp

Вопрос:

У меня есть класс домена, который имеет строковую переменную, содержащую HTML-код. Я хочу отобразить этот код в myxml.gsp.

Для этого я написал следующий код:

Learn.groovy

 public class Learn {

    String content = ("<html><head><title>Learning Grails</title>
       <body>Grails is fun</body></html>");

}
  

myxml.gsp

 <html>
  <head>
    <title>Xml Output</title>
  </head>
  <body>
     <p>${learn.content}<p> 
  </body>
</html>
  

Однако он не может получить значение для «содержимого», получая ошибку: "Cannot get property 'content' on null object" . Что я делаю не так? Есть ли лучший способ добиться этого?

Комментарии:

1. Что вы имеете в виду под «невозможно получить значение»? Каков результирующий HTML между <p> и </p>?

2. Не могли бы вы предоставить нам код вашего контроллера?

Ответ №1:

Я использую это:

${raw(HtmlString)}

Ответ №2:

Если вам нужно отобразить HTML-разметку для пользователя, используйте ${learn.content.encodeAsHTML()} .

Что касается Cannot get property 'content' on null object ошибки, похоже, вы передаете нулевой learn объект или не передаете его вообще. Убедитесь, что у вас есть что-то вроде: [...(something), learn: learnInstance] возвращено из вашего действия.

Если в GSP можно использовать значение null learn (чего я не рекомендую) — используйте ${learn?.content?.encodeAsHTML()} .