Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino

Ideen zu Java-Agent über AJAX mit Sarissa gesucht

<< < (2/2)

Mark³:
ein paar Antworten muss ich präzisieren, damit ich das verstehe:




--- Zitat ---Wieviele Felder musst du denn an den Agenten übergeben? So viele dürften das doch gar nicht sein, wenn du kein ganzes Dokument speichern willst. Dann ist die Übergabe per http-get an den Agenten (Url-encoded) doch ok?

--- Ende Zitat ---
Das sind so etwa 20 Felder. Ich übergebe das allerdings als http-post, nicht als get, ist das egal? Hier ist mein Code:


--- Code: ---function callAgent(strAgentName,urlparam) {
pathname = window.location.pathname;
hosturl=pathname.substring(0,(pathname.lastIndexOf('.nsf')+5))
strUrl = hosturl + strAgentName + "?OpenAgent";
var objHTTP = new XMLHttpRequest();
pathname = window.location.pathname;
hosturl=pathname.substring(0,(pathname.lastIndexOf('.nsf')+5))

strUrl = hosturl + strAgentName + "?OpenAgent";
objHTTP.open("POST", strUrl, false, "", "");
objHTTP.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
objHTTP.send(urlparam);
resp = objHTTP.responseText;
objHTTP = null;

return resp;

--- Ende Code ---

Die Felder übergebe ich als String im Parameter 'urlparam', ich werde evt. allen Feldern, die ich übergeben möchte, einen HTML-Tag zuweisen, so dass ich sie programmatisch mit Javascript übergeben kann und nicht bei jedem neuen Feld auf der Maske in den Code hüpfen muss. Vielleicht 'ID beginnt mit XY' oder sowas...


--- Zitat ---
Durch die Entkoppelung der Prozesse durch Ajax (Asynchron) gibts natürlich auch zusätzliche Schwierigkeiten.
1. Der Ajax call wird abgegeben.
2. Der User kann jetzt irgendetwas mit seinem Browser machen.
3. Der Server meldet an die Browserseite den Ajax-Call zurück.

2. gibt es bei normalen Web Request-Response so nicht.

--- Ende Zitat ---

Momentan führe ich den Befehl synchron aus (Parameter in objHTTP.open), ich weiss nicht, ob es Vorteile bringt, das asynchron zu machen. Das müsste so laufen (aus der Sarissa-Hilfe):


--- Code: ---xmlhttp.onreadystatechange = function()
{
if(xmlhttp.readyState == 4)
alert("Finished loading!");
}

--- Ende Code ---

flaite:
Ich würde auf jeden Fall eine private function bauen, die die Feld-Wert Mappings als eine Art Map zurückgibt. Falls es das in JavaScript gibt. Sonst multidimensionaler Array.

Wenn du das nicht asynchron machst?
Ist der Browser dann für die 8 Sekunden blockiert, wenn der Call vom Server verarbeitet wird?
Asynchron bringt aus meiner Sicht nur neue Komplexitäten. Eigentlich heisst das, dass der Client während der Call-Verarbeitung machen kann, was er will. Das verringert dann natürlich die Kontrolle. Und das ist vermutlich kostspieliger als der Nutzen, den der Client von diesen 8 Sekunden Freiheit hat.

Mark³:
nach einigen asynchronen Tests mache ich das nun wieder synchron, ist für den User irgendwie verständlicher, dauert auch nur 2-3 Sekunden.
Die Feldübergabe mache ich ja über das CGI-Feld REQUEST_CONTENT (wie groß darf das wohl sein?), den String erzeuge ich automatisch, indem ich den einzelnen Notes-Feldern unter den Eigenschaften HTML-Other ein neues Attribut zuweise, das auch den Klartextnamen des Felds beinhaltet. Dabei bin ich auf eine nervige Cross-Browser-Problematik gestossen:

Die Existenz des Feldes wollte ich mit
--- Code: ---if (form.elements[i].Attributname)
--- Ende Code ---
testen. Leider klappt das nur im IE. Auch der Test mit
--- Code: ---typeof form.elements[i].Attributname != 'undefined'
--- Ende Code ---
klappte nur im IE. Die Lösung ist
--- Code: ---if (form.elements[i].getAttribute(Attributname)!= null)
--- Ende Code ---
, dies klappt sowohl im IE als auch in FireFox   >:(
Das wird lustig, wenn im IBM Workplace erstmal alle in Javascript programmieren müssen  >:D

Die Stringzerlegung im Agenten (also in Java) habe ich noch nicht drin, auf jeden Fall muss ich wohl aus einem  String (ich habe ja nur das Feld REQUEST_CONTENT) wieder ein Array machen, das ist ja nicht kompliziert.
Sarissa bietet ja auch Methoden an, um beliebige Dokumente in XML zu konvertieren (Methode xmlize) aber ich denke, hier alles mit XML zu machen ist hier wohl 'übermäßige Vernichtung (mit Atombombe)'  ;D

flaite:

--- Zitat von: mt69clp am 20.09.05 - 11:41:50 ---Das wird lustig, wenn im IBM Workplace erstmal alle in Javascript programmieren müssen  >:D

--- Ende Zitat ---
Soweit ich das verstehe ist das ja dann kein browserspezifisches Java Script. Sondern IBM nimmt das als serverseitige Skriptsprache. Das dürfte dann vereinheitlicht sein.

ich glaub du wirst in den Feldern nicht an Begrenzungen stossen.

Ansonsten:  8)

Falls dich das interessiert. Du kannst bei Manning.com jetzt das ajax Buch wo Eric Pascarello von Javaranch mitschreibt, als Early Access PDF-Version bekommen. Die arbeiten noch dran, aber man kann sich immer schon mal runterladen was da ist. Natürlich auch später, wenn die fertig sind. 

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln