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

Тема в разделе "Lotus + Java + LS2J", создана пользователем oshmianski, 11 июл 2012.

  1. oshmianski

    oshmianski Достойный программист
    Lotus team

    Регистрация:
    25 апр 2012
    Сообщения:
    512
    Симпатии:
    13
    Доброго всем.

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

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

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    есть бридж 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]
     
  3. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    забыл сказать - в 8-ке не проверял :)
     
  4. oshmianski

    oshmianski Достойный программист
    Lotus team

    Регистрация:
    25 апр 2012
    Сообщения:
    512
    Симпатии:
    13
    lmike
    если не сложно, киньте базку
     
  5. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
  6. oshmianski

    oshmianski Достойный программист
    Lotus team

    Регистрация:
    25 апр 2012
    Сообщения:
    512
    Симпатии:
    13
    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: я по-ходу пока плюсовать не могу (
     
  7. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    оно кажет 2 месюги с юнидом: первая - та что взято из поля, вторая - та что взято из подстановки в поле
    мобуть с юнидами что-то не так (надо прописать правильный)
     
  8. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    У меня похожее в режиме для чтения: показывается пустое сообщение, затем вышеуказанная ошибка.

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

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    надо еще вспомнить - что там я писал :) - этож было когда ни вин7 ни домино 8 не было
    если смореть консоль и статус - аплеты вычищаются не сразу
    надо посмотреть указанные ситуации
     
  10. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    770
    Симпатии:
    50
    Не совсем понял вопрос... Но если вы хотите открыть документ в клиенте, исользуйте url типа "notes://server/database/unid". Попробуйте линк на документ вставить в окно Sametime и всё увидите. Скопированный из окна Saniteme url на документ, при правильной установске лотусового клиента, может быть открыт и из командной строки Windows.
     
Загрузка...

Поделиться этой страницей