PrimeFaces 7.0 <p:textEditor HTML-sanitizer 丢弃文本格式,例如居中

PrimeFaces 7.0 <p:textEditor HTML-sanitizer discards text formatting, such as centering

在 PrimeFaces 8 中,似乎可以在使用 <p:textEditor 组件时启用/禁用 HMTML -sanitizer,只需指定 secure='false' 禁用它和 secure='true' 启用它.我试图在 PrimeFaces 7.0 中禁用它,如下所示:

  <p:textEditor id="quillToolbarId" secure='false' widgetVar="editor2" height="300" value="#{editTemplatesBean.kaufAnbotTemplate}" placeholder="Enter your content">

但消毒剂似乎仍然有效。

我的问题是,每当我将 primeFaces p:textEditor 中的文本格式化为居中对齐时,HTML 清理器只会删除我的格式,因此文本最终没有格式化。

解决此问题的一种方法是直接使用 Quill 而不是 Sanitize input.This 作品,但随后我遇到了其他问题,例如这个问题:

https://github.com/quilljs/quill/issues/1379

这也需要解决。

请帮忙!

PrimeFaces 7 的 TextEditor 中没有安全的 属性。如果您查看 TextEditorRenderer.decode 的代码,您会看到调用了消毒器

if (PrimeApplicationContext.getCurrentInstance(context).getEnvironment().isHtmlSanitizerAvailable()) {
    value = HtmlSanitizer.sanitizeHtml(value,
          editor.isAllowBlocks(), editor.isAllowFormatting(),
          editor.isAllowLinks(), editor.isAllowStyles(), editor.isAllowImages());
}

如果您查看 PrimeEnvironment,您会发现如果 class org.owasp.html.PolicyFactory 在 class 路径上可用,则会设置 属性:

htmlSanitizerAvailable = LangUtils.tryToLoadClassForName("org.owasp.html.PolicyFactory") != null

所以你要么:

  • 更新到 PF 8
  • 确保 class 在 class 路径
  • 上没有这个 class
  • 覆盖渲染器和change/remove检查代码