Я перемещаю ZK стандартное Spring приложение в Spring Boot .
У меня проблема с CKEditor конфигурация.Я использую внешние плагины, ниже приведена конфигурация:
CKEDITOR.plugins.addExternal('wordcount', 'plugins/wordcount/', 'plugin.js');
CKEDITOR.plugins.addExternal('notification', 'plugins/notification/', 'plugin.js');
CKEDITOR.editorConfig = function (config) {
config.extraPlugins = 'wordcount,notification';
config.mytoolbar = [ ... ]
config.wordcount = { ... };
};
Со старым стандартным приложением Spring , я настроил его так:
1 - плагины ( wordcount и уведомления папки), помещенные в src / webapp / zkpatch / js / ckez / ext / CKeditor / plugins
2 - файл конфигурации ckeditor ( config.js ) помещен в src / webapp / js
3 - В zk.xml :
<library-property>
<name>org.zkoss.web.util.resource.dir</name>
<value>/zkpatch</value>
</library-property>
4 - в файле ZUL:
<ckeditor customConfigurationsPath="/js/config-ckeditor.js" value="@load(vm.myvalue)"/>
Это сработало отлично.
При Spring Boot расположение ресурсов изменилось, поэтому я использую следующее:
1 - плагины ( wordcount * 1059)* и уведомления папки), помещенные в src / resources / web / zul / js / ckez / ext / CKeditor / plugins
2 -Файл конфигурации ckeditor ( config.js ) помещается в src / resources / static / js
3 - в файле ZUL:
<ckeditor customConfigurationsPath="/js/config-ckeditor.js" value="@load(vm.myvalue)"/>
Но я получаю следующую ошибку (всплывающее окно ZK) при достижении страницы:
/ js / ckez / ext / CKeditor / plugins/wordcount/plugin.js не найден
По исходному тексту страницы видно, что файл плагина JavaScript загружен правильно, в консоли браузера также есть ошибка TypeError: k is null
.
Куда мне нужно переместить пользовательские папки плагинов, чтобы они были найдены Spring Boot?
РЕДАКТИРОВАТЬ 1
Я пропустил некоторые из нихпути выше, я, конечно, использую src/main/resources
, а не src/resources
, а папки плагинов CKEditor помещены в src/resources/web/js/ckez/ext/CKeditor/plugins
(не в папку zul
).
Я забыл упомянуть, что мыиспользование инициализатора пользовательских приложений для поддержки пользовательских областей (один из моих коллег открыл проблему здесь https://github.com/zkoss/zkspringboot/issues/7).
Мы используем Java 11 , ZK 8.6.0 и zkspringboot 1.0.3 стартер с Spring boot 2.0.5.RELEASE (я пробовал последний 2.1.0, но, похоже, это такпока не совместим с вашим стартером, кстати было бы неплохо иметь возможность использовать 2.1.0 release для производства, так как он официально поддерживает Java 11).
EDIT2
Undertow настроен с HTTPS и HTTP / 2 .
При непосредственном обращении к приложению (https://locahost:8443/myapp)У меня действительно нет никаких проблем, CKEditor загружается нормально.
Я только что заметил, что проблема возникает, когда я использую передний Apache сервер с AJP (https://locahost/myapp),, то CKEditor не может загрузить с вышеуказанным сообщением об ошибке.На вкладке сети браузера я вижу, что я также получаю код 403 для некоторых статических ресурсов (настраиваемый js / css).
Конфигурация Apache очень проста:
ProxyPass "/myapp" "ajp://localhost:8009/myapp"
ProxyPassReverse "/myapp" "ajp://localhost:8009/myapp"
Конфигурация Undertow тоже:
@Configuration
public class UndertowEmbeddedAjpConfiguration {
public UndertowEmbeddedAjpConfiguration() { }
@Bean
public UndertowServletWebServerFactory undertowServletWebServerFactory() {
final UndertowServletWebServerFactory undertow = new UndertowServletWebServerFactory();
undertow.addBuilderCustomizers((UndertowBuilderCustomizer) builder -> {
builder.addAjpListener(8009, "localhost");
});
return undertow;
}
}
Я знаю, что AJP вышел из моды, к сожалению, это требование для нас, так как мы вынуждены использовать Shibboleth SSO для всех наших приложений, для которых требуется AJP ...
При необходимости я могу предоставить готовую версию Docker.
РЕДАКТИРОВАТЬ 3
Проблема наконец исчезла после того, как я обновил некоторые зависимости.К сожалению, я не заметил, какие из них, поскольку я понял, спустя несколько недель после нескольких развертываний ...