Есть задача вызвать из класса экрана пользовательский JS-метод. Согласно документации в Jmix для этого есть JavaScriptComponent. В документации не очень четко описано, где нужно размещать js-скрипт и как его именовать. Пытаюсь делать так:
- В папке
resources\VAADIN
создаю подпапкуbeeper
и размещаю в ней скриптbeeper-connector.js
:
ru_company_jmix_screen_component_Beeper = function() {
let connector = this;
let element = connector.getElement();
element.innerHTML = "<div/>";
this.onStateChange = function () {
connector.beep = function () {
alert('BEEP!!!');
};
}
};
- В дескрипторе экрана добавляю
jsComponent
<jsComponent
id="beeper"
initFunctionName="ru_company_jmix_screen_component_Beeper">
</jsComponent>
- В класс экрана добавляю поле JavaScriptComponent:
@Autowired
protected JavaScriptComponent beeper;
- Вставляю вызов JS-метода в методе экрана:
@Subscribe("text")
public void onEnterPress(TextInputField.EnterPressEvent event) {
beeper.callFunction("beep");
}
- Запускаю приложение. При открытии экрана на месте
jsComponent
вижу сообщение об ошибке:
Could not initialize JavaScriptConnector because no JavaScript init function was found. Make sure one of these functions are defined:
ru_company_jmix_screen_component_Beeper
Подскажите, пожалуйста, что я делаю не так. Спасибо!