JSF / primefaces 在 ajax 请求中处理控制字符(十六进制表单提要:0x0c)?

JSF / primefaces handling of control character (form feed hex: 0x0c) in ajax requests?

我很好奇在 JSF / primefaces 中使用 ajax 请求时遇到的边缘情况 运行。

我发现如果我在通过 ajax 处理的请求中输入换页字符(java 中的“/f”或十六进制的 0x0C),它会导致 ajax 请求失败,因为生成的 xml 被认为是无效的。如果用户正在从另一个文档中复制和粘贴恰好包含此字符的内容,或者更可能是 QA 人员(或恶意用户)输入该字符以试图破坏我的一天,我只希望出现这种情况。

我在 chrome 开发者工具中看到的确切响应:

<partial-responseid="j_id1">
  <parsererror>
    <h3>This page contains the following errors:</h3>
    <div>
      error on line 2 at column 68: Input is not proper UTF-8, indicate encoding !
      Bytes: 0x0C 0x20 0x63 0x61
    </div>
  <h3>Below is a rendering of the page up to the first error.</h3>
  </parsererror>
  <changes>
    <update id="j_idt5"/>
  </changes>
</partial-response>

Sample Project to reproduce the error

XML 中似乎有一个限制,即这个字符不能包含在 XML 1.0 中,那么 JSF / primefaces 可以做些什么来避免这种情况,还是我要求太多了从框架?如果我无法让 JSF / primefaces 优雅地处理这个问题,我该如何生成正确的错误页面并将问题记录在用户控制台以外的其他地方?

我认为这是一个错误并在此处报告:https://github.com/primefaces/primefaces/issues/3875

问题解决后我会反馈。

更新:原来是Mojarra问题: https://github.com/eclipse-ee4j/mojarra/issues/4516