#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()}
.