替换gsp

时间:2018-04-17 10:49:01

标签: grails gsp saxparseexception

我在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)

如果&

可以替换&amp;,则可以解决此问题

我尝试使用g:encodeAs,但这没有用。我无法将messages.properties中的&更改为&amp;and

甚至可以在gsp?

中渲染之前替换从messages.properties返回的文本

1 个答案:

答案 0 :(得分:1)

我使用以下代码解决了问题:

${JsonUtil.parseTextForXhtml(message(code:code, locale: locale))}

然后在JsonUtil中,我将&替换为&amp;,如下所示:

static String parseTextForXhtml(String text) {
    text.replaceAll("&", "&amp;")
}