У меня есть приложение JSF с PrimeFaces, которое я обновляю до PrimeFaces версии 8 (в настоящее время использую версию 7).
После обновления у меня странное поведение с TextEditor в диалоговом окне. Я открываю диалоговое окно с помощью commandLink и обновляю его, обновляя sh его содержимое. Когда я это делаю, я получаю сообщение об ошибке на консоли JavaScript.
texteditor.js.xhtml?ln=primefaces&v=8.0:7 Uncaught TypeError: Cannot read property 'innerHTML' of null
at e.value (texteditor.js.xhtml?ln=primefaces&v=8.0:7)
at new e (texteditor.js.xhtml?ln=primefaces&v=8.0:7)
at texteditor.js.xhtml?ln=primefaces&v=8.0:7
at Array.map (<anonymous>)
at e.value (texteditor.js.xhtml?ln=primefaces&v=8.0:7)
at e.value (texteditor.js.xhtml?ln=primefaces&v=8.0:7)
at e.value (texteditor.js.xhtml?ln=primefaces&v=8.0:7)
at texteditor.js.xhtml?ln=primefaces&v=8.0:7
at Array.forEach (<anonymous>)
at e.value (texteditor.js.xhtml?ln=primefaces&v=8.0:7)
Ошибка возникает из-за кода:
a(e.prototype.__proto__ || Object.getPrototypeOf(e.prototype), "selectItem", this).call(this, t, n), t = t || this.defaultItem, this.label.innerHTML = t.innerHTML
где t равно null, поэтому t.inner HTML выдает ошибку.
Однако - если я только открываю диалог, но не обновляю его - все работает нормально.
Я создал минимальный образец. Первый fink работает нормально, вторая ссылка создает ошибку.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:p="http://primefaces.org/ui"
xmlns:h="http://java.sun.com/jsf/html"
>
<h:head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
<title>test</title>
</h:head>
<h:body>
<h:form id="contentForm">
<p:commandLink value="works"
oncomplete="PF('dialogTemplateSendMailToPersonVar').show()"/>
<br/>
<p:commandLink value="does not work"
oncomplete="PF('dialogTemplateSendMailToPersonVar').show()"
update=":templatePersonSendMailForm"/>
</h:form>
<p:dialog id="dialogTemplateSendMailToPersonId" widgetVar="dialogTemplateSendMailToPersonVar" dynamic="true">
<h:form id="templatePersonSendMailForm">
<p:textEditor id="txtTemplateText" />
</h:form>
</p:dialog>
</h:body>
</html>
В этом примере обновление бесполезно, но вызывает ту же ошибку, что и на моей полной странице, где у меня есть вспомогательные bean-компоненты, заполняющие редактор и другие поля в диалоге.
Кто-нибудь испытывал что-то похожее или есть идеи, как это исправить? Я проверил примечания к выпуску для версий PrimeFaces 8.0.x, но не обнаружил никаких проблем с TextEditor. Не обновлять диалог - это не вариант; -)