Открытие Документа Из Japplet

oshmianski

Достойный программист
Lotus team
25.04.2012
555
8
#1
Доброго всем.

Имеем:
1) Форма
2) Встроенный в форму JApplet
3) В JApplet находится JTable
4) В JTable у записи знаю server, db, unid
5) LN 8.5.x
6) Windows

Вопрос:
Как открыть лотусовый документ из <JTabe в JApplet в форме>?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#2
есть бридж Java-JS (нетшкаповский еще) я писал про него на Интертрасте
создаем кнопку на форме, с нужным кодом, жмем её (если надо - заполняем поля JS-ом)
http://web2.inttrust.ru/site/itforum.nsf/a...50?OpenDocument
вот тестовый код (могу БД закатать, с тестовой формой):<!--shcode--><pre><code class='java'> try {
//TODO add your code for jButton1.actionPerformed
if (win != null)
// следующие строки - вариант манипуляций с объектам
jsdoc=(JSObject)win.getMember("document");
jsforms=(JSObject)jsdoc.getMember("forms");
jsform=(JSObject)jsforms.getSlot(0);
jsfield=(JSObject)jsform.getMember("test");
String s=(String)jsfield.getMember("value");
jsfield=(JSObject)jsform.getMember("UID");
String args[] = new String[1];
args[0] = "Set UID and launch:" + s;
win.call("alert", args);
jsbutton=(JSObject)jsform.getMember("testLS");
jsfield.setMember("value",s);
jsbutton.call("click",null);
//здесь вариант запуска через eval
/* win.eval("alert('Set UID & launch using eval:' + document.forms[0].test.value)");
win
.eval("document.forms[0].UID.value=document.forms[0].test.value");
win.eval("document.forms[0].testLS.click()");
*/ } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}[/CODE]win получаем так (это в инициализации д.б.) <!--shcode--><pre><code class='java'> public void init() {
System.out.println("init");
super.init();
try {
win = JSObject.getWindow(this);
} catch (Exception e) {
e.printStackTrace();
}

}[/CODE]
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#3
забыл сказать - в 8-ке не проверял :)
 

oshmianski

Достойный программист
Lotus team
25.04.2012
555
8
#6
lmike,
спасибо большое, помогло.

замечены некоторые особенности:

1) jsfield.setMember("value",s); вываливает JVM в OutOfStack. Это для Win7 + LN 8.5.3.1 Standart.
Работает
win.eval("document.forms[0].UNID.value='" + selectedRow.getUnid() + "'");
win.eval("document.forms[0].openButton.click()");

2) Set doc=dbOther.GetDocumentByUNID(uiWS.CurrentDocument.Document.UNID(0))
Call uiWs.EditDocument (False,doc,,,,False)
документ открывает, но кажет ошибку Invalid universal ID. Это для WinXP + LN 8.5.3.1 Basic. Возможно связано с тем, что документ открывается не в текущей бд, не проверял. В связке Win7 + 8.5.3.1 Standart такой ошибки не кажет.

ps: я по-ходу пока плюсовать не могу (
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#7
оно кажет 2 месюги с юнидом: первая - та что взято из поля, вторая - та что взято из подстановки в поле
мобуть с юнидами что-то не так (надо прописать правильный)
 

VladSh

начинающий
Lotus team
11.12.2009
1 262
6
#8
2)документ открывает, но кажет ошибку Invalid universal ID.
У меня похожее в режиме для чтения: показывается пустое сообщение, затем вышеуказанная ошибка.

lmike
Дополнительно: если закрыть 2-й док, в котором мы клацали кнопку в режиме для редактирования (док открылся - всё правильно), затем открыть снова, но в режиме для чтения, и нажать кнопку, наблюдаем краш 8-ки.
Может объекты как-то не полностью чистятся?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#9
надо еще вспомнить - что там я писал :) - этож было когда ни вин7 ни домино 8 не было
если смореть консоль и статус - аплеты вычищаются не сразу
надо посмотреть указанные ситуации
 

garrick

Lotus team
26.10.2009
898
61
#10
Вопрос:
Как открыть лотусовый документ из <JTabe в JApplet в форме>?
Не совсем понял вопрос... Но если вы хотите открыть документ в клиенте, исользуйте url типа "notes://server/database/unid". Попробуйте линк на документ вставить в окно Sametime и всё увидите. Скопированный из окна Saniteme url на документ, при правильной установске лотусового клиента, может быть открыт и из командной строки Windows.