При использовании на одном дескрипторе(проверял на edit и на browse) компонента upload и фрагмента использующего компонент jscomponent выходит ошибка
код фрагмента
код дескриптора
при отдельном использовании успешно отрабатывает
При использовании на одном дескрипторе(проверял на edit и на browse) компонента upload и фрагмента использующего компонент jscomponent выходит ошибка
код фрагмента
код дескриптора
при отдельном использовании успешно отрабатывает
Добрый день.
Уточните, пожалуйста, какая версия платформы используется в проекте? Если это возможно, приложите XML файлы экранов или небольшой демо проект, в котором воспроизводится эта проблема.
версия кубы = 7,2,15
экран edit
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/screen/window.xsd"
caption="msg://edsRegisterEdit.caption"
messagesPack="kz.almanit.jcrm.web.screens.edsregistry">
<data>
<instance id="edsRegistryDc"
class="kz.almanit.jcrm.entity.eds.EdsRegistry">
<view extends="_local" systemProperties="true"/>
<loader/>
</instance>
</data>
<dialogMode height="600"
width="800"/>
<layout spacing="true">
<upload id="upload"
showClearButton="true"
showFileName="true"/>
<hbox id="editActions" spacing="true">
<button id="commitAndCloseBtn" action="windowCommitAndClose"/>
<button id="closeBtn" action="windowClose"/>
</hbox>
<fragment id="ncaLayerFragment" enable="true" screen="jcrm_KalkanCryptSignXmlFragment"/>
</layout>
</window>
дескриптор фрагмента
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<fragment xmlns="http://schemas.haulmont.com/cuba/screen/fragment.xsd">
<layout>
<scrollBox>
<jsComponent id="ncaLayerShowJs"
initFunctionName="nca_layer_js_component_clicker">
<dependencies>
<dependency path="https://code.jquery.com/jquery-3.6.0.min.js"/>
<dependency
path="https://cdnjs.cloudflare.com/ajax/libs/jquery.blockUI/2.70.0-2014.11.23/jquery.blockUI.min.js"/>
<dependency path="vaadin://nca-layer-connectorJS.js"/>
</dependencies>
</jsComponent>
<button id="ncaLayerShow" caption="Подписать документ"/>
</scrollBox>
</layout>
</fragment>
js component
nca_layer_js_component_clicker = function () {
let connector = this;
let webSocket = new WebSocket('wss://127.0.0.1:13579/');
let callback = null;
let SignInformation = {
signXmlBack: function (result) {
unblockScreen();
if (result['code'] === "500") {
alert(result['message']);
} else if (result['code'] === "200") {
let res = result['responseObject'];
connector.signXmlBack(res, new Date());
}
}
};
const openDialog = function () {
if (confirm("Ошибка при подключении к NCALayer. Запустите NCALayer и нажмите ОК") === true) {
location.reload();
}
};
const unblockScreen = function () {
$.unblockUI();
};
const blockScreen = function () {
$.blockUI({
message: '<br/>Подождите, выполняется операция в NCALayer...',
css: {
border: 'none',
padding: '15px',
backgroundColor: '#000',
'-webkit-border-radius': '10px',
'-moz-border-radius': '10px',
opacity: .5,
color: '#fff'
}
});
};
webSocket.onopen = function (event) {
console.log("Connection opened");
};
webSocket.onclose = function (event) {
if (event.wasClean) {
console.log('connection has been closed');
} else {
console.log('Connection error');
openDialog();
}
console.log('Code: ' + event.code + ' Reason: ' + event.reason);
};
webSocket.onmessage = function (event) {
let result = JSON.parse(event.data);
if (result != null) {
let rw = {
code: result['code'],
message: result['message'],
responseObject: result['responseObject'],
getResult: function () {
return this.result;
},
getMessage: function () {
return this.message;
},
getResponseObject: function () {
return this.responseObject;
},
getCode: function () {
return this.code;
}
};
if (callback != null) {
SignInformation[callback](rw);
}
}
};
const getKeyInfo = function (storageName, callBack) {
let getKeyInfo = {
"module": "kz.gov.pki.knca.commonUtils",
"method": "getKeyInfo",
"args": [storageName]
};
callback = callBack;
webSocket.send(JSON.stringify(getKeyInfo));
};
const signXml = function (storageName, keyType, xmlToSign, callBack) {
let signXml = {
"module": "kz.gov.pki.knca.commonUtils",
"method": "signXml",
"args": [storageName, keyType, xmlToSign, "", ""]
};
callback = callBack;
webSocket.send(JSON.stringify(signXml));
};
const signXmls = function (storageName, keyType, xmlsToSign, callBack) {
let signXmls = {
"module": "kz.gov.pki.knca.commonUtils",
"method": "signXmls",
"args": [storageName, keyType, xmlsToSign, "", ""]
};
callback = callBack;
webSocket.send(JSON.stringify(signXmls));
};
const getKeyInfoCall = function () {
blockScreen();
let selectedStorage = "PKCS12";
getKeyInfo(selectedStorage, "getKeyInfoBack");
};
const getKeyInfoBack = function (result) {
unblockScreen();
if (result['code'] === "500") {
alert(result['message']);
} else if (result['code'] === "200") {
console.log(result);
}
};
connector.getKeyInfoCallButton = function () {
getKeyInfoCall();
};
connector.signXmlCall = function () {
let signInformation = this.getState().data;
let xml = signInformation.signXml ? signInformation.signXml : "";
blockScreen();
signXml("PKCS12", "SIGNATURE", xml, "signXmlBack");
}
// TODO if needed add sign of xmls
}
Добрый день Наталья , не подскажете это возможно как то решить ?
Здравствуйте!
Проблема возникает из-за того, что указанная вами версия jQuery (3.6.0) выше версии, используемой в платформе (3.3.1).
Для того, чтобы использовать библиотеку непосредственно из платформы, вам нужно указать в коде фрагмента зависимость следующим образом:
<dependency path="webjar://jquery:jquery.min.js"/>
С уважением,
Надежда.
спасибо, помогло