grails - 替换从gsp中messages.properties返回的文本

标签 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返回的文本吗?

最佳答案

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

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

然后在JsonUtil中,我将&替换为&amp;,如下所示:
static String parseTextForXhtml(String text) {
    text.replaceAll("&", "&amp;")
}

关于grails - 替换从gsp中messages.properties返回的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49876131/

相关文章:

grails - Groovy/Grails 如何使构造函数私有(private) - 正确的方法

data-binding - 数据绑定(bind)到 Grails 中命令上的枚举

loops - Grails GSP循环遍历索引,并对选定的行进行处理

grails - 在 Grails 应用程序中找不到模板

grails - Grails:从特定gsp页面的布局中跳过js

grails - grails如何在config.groovy之前加载外部配置文件

grails - 在开发中更改Grails 3.0.9中的默认服务器端口

java - cvc-复杂类型.3.2.2 : Attribute xsi:schemaLocation is not allowed to appear in <people> in Java DOM

java - 异常处理 : Will parent class exception catch child exception too

java - 我的程序中发生 SAXParseException