我在gsp中有一个文本,如下所示:<g:message code="${code}" locale="${locale}"/>
问题是返回的消息可能包含诸如&
之类的字符,并且将此gsp导出为pdf时会发生以下错误:
Caused by: org.xml.sax.SAXParseException; lineNumber: 396; columnNumber: 44; The entity name must immediately follow the '&' in the entity reference.
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:485)
如果可以将
&
替换为&
,则可以解决此问题我尝试使用
g:encodeAs
,但这没有帮助。我无法将messages.properties中的&
更改为&
或and
。在gsp中进行渲染之前,甚至可以替换从messages.properties返回的文本吗?
最佳答案
我使用以下代码解决了问题:
${JsonUtil.parseTextForXhtml(message(code:code, locale: locale))}
然后在JsonUtil中,我将
&
替换为&
,如下所示:static String parseTextForXhtml(String text) {
text.replaceAll("&", "&")
}
关于grails - 替换从gsp中messages.properties返回的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49876131/