Другим вариантом является использование JSF-версий формы и текстовой области. (Скорее всего, это можно сделать и с элементами сквозного прохождения, но я этого не пробовал.)
<h:form id="form">
<p>
My Editor:<br />
<h:inputTextarea cols="90" rows="20" id="editor1" value="#{EditorBean.value}" />
<script type="text/javascript">
ClassicEditor.create(document.querySelector('form\\:editor1'))
.then( editor => {
console.log( editor );
} )
.catch( error => {
console.error( error );
} );
</script>
</p>
</form>
Предполагается, что у вас нет prependId=false
.
Странный \\:
- проблема с выходом. Без этого не получится. Вы получите сообщение об ошибке «неверный селектор» в консоли.
Вы можете идентифицировать form
и editor1
с другими именами, но вам также потребуется изменить селектор. Вы не хотите оставлять настройки по умолчанию, так как они хрупкие и часто меняются при обновлении страницы. Теперь это изменится, только если вы измените структуру, где editor1
относительно form
. Например. если вы добавите fieldset
вокруг editor1
, то идентификатор будет выглядеть примерно так: form\\:fieldset\\:editor1
, где fieldset
- это идентификатор fieldset
, как указано в JSF. JSF создаст для вас длинную версию.
Для этого также необходимо добавить скрипт CKEditor в заголовок, например:
<script src="https://cdn.ckeditor.com/ckeditor5/11.2.0/classic/ckeditor.js"></script>
Этот конкретный пример относится к версии ClassicEditor
. Если вы хотите другую версию, вам нужно изменить сценарий и часть, которая говорит ClassicEditor
.
Различия между сценарием, который вызывается в вопросе, и этой версией может заключаться в том, что это текущая версия (как я ее пишу), пока вопрос старше
В качестве альтернативы, вы можете предпочесть h:outputScript
. Но тогда вам может потребоваться разместить скрипт в папке ресурсов, а не использовать версию из CDN.
Смотри также: