Ls2j Передача Параметра Notesdocument В Конструктор Javaclass

Тема в разделе "Lotus + Java + LS2J", создана пользователем Serduko, 11 окт 2013.

  1. Serduko

    Serduko Well-Known Member

    Регистрация:
    11 окт 2011
    Сообщения:
    174
    Симпатии:
    0
    Добрый день! Возможно ли, если да, то как?
     
  2. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
    По-моему нет. Оно понимает только "простые" классы, типа String, Integer и т.п. Document не прокатит, но можно передать UNID документа в виде строки.
     
  3. Serduko

    Serduko Well-Known Member

    Регистрация:
    11 окт 2011
    Сообщения:
    174
    Симпатии:
    0
    Можно ли тогда получить NotesSession внутри класса, не агента?
     
  4. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
    Да, конечно.
     
  5. Serduko

    Serduko Well-Known Member

    Регистрация:
    11 окт 2011
    Сообщения:
    174
    Симпатии:
    0
    Как?
     
  6. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
  7. Serduko

    Serduko Well-Known Member

    Регистрация:
    11 окт 2011
    Сообщения:
    174
    Симпатии:
    0
    Я так понял NotesFactory - это для сервера, а как получить сессию на клиенте, интерактивно?
     
  8. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
    Нет, можно использовать и на клиенте, и вообще автономно от Лотуса, но надо соблюсти определённые правила. Я же давал ссылку на Help - там есть примеры:
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">This is an application that makes local calls and extends the NotesThread class</div></div><div class="sp-body"><div class="sp-content">
    Код (Text):
    import lotus.domino.*;

    public class platform1 extends NotesThread
    {
    public static void main(String argv[])
    {
    platform1 t = new platform1();
    t.start();
    }
    public void runNotes()
    {
    try
    {
    Session s = NotesFactory.createSession();
    // To bypass Readers fields restrictions
    // Session s = NotesFactory.createSessionWithFullAccess();
    String p = s.getPlatform();
    System.out.println("Platform = " + p);
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    }

    }
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">This is an application that makes local calls and implements the Runnable interface</div></div><div class="sp-body"><div class="sp-content">
    Код (Text):
    import lotus.domino.*;

    public class platform2 implements Runnable
    {
    public static void main(String argv[])
    {
    platform2 t = new platform2();
    NotesThread nt = new NotesThread((Runnable)t);
    nt.start();
    }
    public void run()
    {
    try
    {
    Session s = NotesFactory.createSession();
    String p = s.getPlatform();
    System.out.println("Platform = " + p);
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    }
    }
     
  9. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
    Например так:
    Код (Text):
    import lotus.domino.Database;
    import lotus.domino.Document;
    import lotus.domino.NotesException;
    import lotus.domino.NotesFactory;
    import lotus.domino.NotesThread;
    import lotus.domino.Session;

    public class Class1 extends NotesThread {
    private Session session = null;
    private Document document = null;

    public Class1(String unid) {
    try {
    session = NotesFactory.createSession();
    // не уверен, что "прокатит". В противном случае придётся использовать
    // getDatabase(server, filepath) с указаниаем имени сервера и базы данных.
    Database database = session.getCurrentDatabase();
    document = database.getDocumentByUNID(unid);
    } catch (NotesException ne) {
    ne.printStackTrace();
    }
    }

    public void runNotes() {
    try {
    // Здесь твой код          
    System.out.println(document.getItemValueString("Form"));

    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    try {
    if (session != null)
    session.recycle();
    } catch (NotesException e) {
    // Nothing TODO
    }
    }
    }
    }
    соответственно в LS надо инициализировать класс Set javaObject = javaclass.CtreateObject("(Ljava/lang/String;)V", unid) и "запустить его javaObject.start()
    Ничего я тут не напутал с инициализацией объектов LS2J? Давно не пользовался этой ерундой.
     
  10. Serduko

    Serduko Well-Known Member

    Регистрация:
    11 окт 2011
    Сообщения:
    174
    Симпатии:
    0

    Вложения:

  11. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
    Ну, тогда извиняйте - был не прав.
    А какую вообще задачу решаете? Зачем вам этот LS2J?
     
  12. Serduko

    Serduko Well-Known Member

    Регистрация:
    11 окт 2011
    Сообщения:
    174
    Симпатии:
    0
    Пока никакую, но была мысль сделать dialogbox с Jtree, с динамически изменяемым составом. Существующая реализация (сделана не мной) с Folder, в который добавляется список документов и при закрытии Dialogbox, список очищается, мягко говоря, мне не нравится. Сейчас задумываюсь сделать через personal view (изменять формулу перед запуском диалога), но от реализации на java тоже пока не отказался.
     
Загрузка...
Похожие Темы - Ls2j Передача Параметра
  1. Amfion
    Ответов:
    2
    Просмотров:
    1.237
  2. seoman2
    Ответов:
    26
    Просмотров:
    3.109
  3. nvyush
    Ответов:
    8
    Просмотров:
    3.172
  4. VladSh
    Ответов:
    8
    Просмотров:
    2.706
  5. Corexis
    Ответов:
    0
    Просмотров:
    86

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