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

garrick

Lotus team
26.10.2009
894
61
#2
По-моему нет. Оно понимает только "простые" классы, типа String, Integer и т.п. Document не прокатит, но можно передать UNID документа в виде строки.
 

Serduko

Well-known member
11.10.2011
170
0
#7
Я так понял NotesFactory - это для сервера, а как получить сессию на клиенте, интерактивно?
 

garrick

Lotus team
26.10.2009
894
61
#8
Нет, можно использовать и на клиенте, и вообще автономно от Лотуса, но надо соблюсти определённые правила. Я же давал ссылку на 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">
Код:
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">
Код:
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();
}
}
}
 

garrick

Lotus team
26.10.2009
894
61
#9
Например так:
Код:
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? Давно не пользовался этой ерундой.
 

garrick

Lotus team
26.10.2009
894
61
#11
Ну, тогда извиняйте - был не прав.
А какую вообще задачу решаете? Зачем вам этот LS2J?
 

Serduko

Well-known member
11.10.2011
170
0
#12
Ну, тогда извиняйте - был не прав.
А какую вообще задачу решаете? Зачем вам этот LS2J?
Пока никакую, но была мысль сделать dialogbox с Jtree, с динамически изменяемым составом. Существующая реализация (сделана не мной) с Folder, в который добавляется список документов и при закрытии Dialogbox, список очищается, мягко говоря, мне не нравится. Сейчас задумываюсь сделать через personal view (изменять формулу перед запуском диалога), но от реализации на java тоже пока не отказался.