当请求的响应包含货币符号(在本例中为“£”)时,我在请求的响应中遇到损坏的 XML。
我已经做了很多测试,并将其范围缩小到在 XML 中使用“£”,这会以某种方式导致不完整的结束标记,这当然会导致无法解析的 XML,例如:
<?xml version='1.0' encoding='UTF-8'?>
<partial-response>
<changes>
<update id="productForm">
<![CDATA[
<form enctype="application/x-www-form-urlencoded">
<div>
<span>
<span id="productForm:price">£10.00</span>
</span>
</div>
</form>]]>
</update>
</changes>
</partial-response
这是由于partial-response
在开发控制台中确认的结束标记损坏(不是拼写错误):
£
正如调试和测试所确定的那样, 存在的就是原因。
以下是我可以做出的一些断言:
- 受影响的代码在 Java 7/Glassfish 3 上运行良好
- 相同的代码在 Java 8/Wildfly 17上不起作用,除非
£
符号被省略,此时它是 BAU 货币符号已尝试使用:
<f:convertNumber type="currency" locale="en_GB" currencyCode="GBP"/>
<f:convertNumber type="currency" locale="en_GB" currencySymbol="£"/>
所有这些都失败了。<f:convertNumber type="currency" locale="en_GB" pattern="0.00"/>
没有,但显然因为它没有以£
删除 XHTML 模板的所有其余部分并简单地添加
<p>£</p>
也会使其变得糟糕。
我看不到任何明显的原因 - 我也无法确定它是应用程序服务器还是应用程序配置问题。它已经在 *NIX 环境中进行了测试,在这方面没有任何迹象表明它是环境的。
我在这里有什么明显的遗漏吗?我能看到的所有编码都设置为UTF-8,所以我被这个难住了,通过搜索找不到其他类似的情况。
感谢您提前提出任何建议