首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >XML部分响应中断,在Wildfly/Primefaces上使用货币符号

XML部分响应中断,在Wildfly/Primefaces上使用货币符号
EN

Stack Overflow用户
提问于 2020-04-08 12:02:18
回答 1查看 58关注 0票数 1

当请求包含货币符号(在本例中为“£”)时,我在请求的响应中遇到了XML中断。

我已经做了相当多的测试,并将其缩小到在XML中使用“of”,这在某种程度上会导致不完整的结束标记,这当然会导致无法解析的XML,例如:

代码语言:javascript
运行
复制
<?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结束标记损坏(而不是错误)造成的,在dev控制台中确认了这一点:

£的存在是由调试和测试确定的原因。

以下是我能做出的一些断言:

  • 受影响的代码在Java 7/Glassfish 3
  • 上工作得很好,同样的代码在Java 8/Wildfly 17上不起作用,除非遗漏了£符号,此时它是BAU
  • ,货币符号尝试使用:

代码语言:javascript
运行
复制
- `<f:convertNumber type="currency" locale="en_GB" currencyCode="GBP"/>`
- `<f:convertNumber type="currency" locale="en_GB" currencySymbol="&#163;"/>` All of these fail.
- `<f:convertNumber type="currency" locale="en_GB" pattern="0.00"/>` does not, but obviously because it doesn't end up with a `£`

  • 删除了XHTML模板的所有其余部分,简单地添加<p>&#163;</p>也使其成为bork.

我看不出有什么明显的原因会导致这种情况--我也无法确定这是应用服务器还是应用程序配置问题。它已经在*NIX环境上进行了测试,在这方面没有任何证据表明它是环境的。

这里有什么明显的遗漏吗?我所看到的所有编码都被设置为UTF-8,所以我对此感到困惑,并且通过搜索找不到其他类似的情况。

谢谢你提前提出建议

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-08 14:47:53

经过进一步的调查,发现这是(未确定的) @WebFilter的结果。

web过滤器实现拦截输出字符串中的某些值,尽管实际上没有更改请求的内容,特别是在调试器中,但这似乎会给响应带来更多的问题。

web过滤器中代码的问题区域是:

代码语言:javascript
运行
复制
servletResponse.setContentLength( filteredContent.length() );

我没有编写这个类,并怀疑它可能是“模板代码”,但是这个属性的重新设置所导致的问题似乎远远多于它所解决的问题。移除它解决了问题。servlet似乎能够自己处理这个属性(至少等待更多的测试)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61100210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档