Autor Thema: Umfangreiche Eingabevalidierung im Web  (Gelesen 2459 mal)

Offline Markus

  • Frischling
  • *
  • Beiträge: 29
  • I love YaBB 1G - SP1!
Umfangreiche Eingabevalidierung im Web
« am: 10.07.02 - 20:25:51 »
Hallo,

vielleicht kann mir jemand helfen.  :)
Ich habe das Problem, dass ich im Web umfangreich Eingabevalidierungen vornehmen muss. Bei Fehlern soll es dann zu einem Dialog mit dem Benutzer kommen. Da die Eingabevalidierungen nicht nur von den aktuellen Feldinhalten, sondern auch von einer Reihe von Backend-Objekten abhängig sind, ist das ganze in einem LS-Agenten angesiedelt, der im WebQuerySave aufgerufen wird. Dort habe ich es allerdings bisher noch nicht hinbekommen, einen Dialog im Browser anzuzeigen. Meine Versuche in der Richtung:

Print "<SCRIPT LANGUAGE=JavaScript>"
Print "Arg1 = document.forms[0].Feld1.value"
Print "Arg2 = document.forms[0].Feld2.value"
Print "alert("Fertig "+ Arg1 + Arg2 ")"
     
Print "</SCRIPT>"

wurden bisher ignoriert.  :P Der Agent führt allerdings dahinterstehenden Code korrekt aus.  :)
Irgendwie fehlt mir auch noch das Verständnis, wo hier Anführungsstriche hinkommen und wo nicht  ???
Falls mir jemand helfen kann, wäre ich echt dankbar.      
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline grosses.manitu

  • Junior Mitglied
  • **
  • Beiträge: 66
  • Geschlecht: Männlich
  • Ich liebe deutsche Element Begriffe...
Re: Umfangreiche Eingabevalidierung im Web
« Antwort #1 am: 11.07.02 - 10:59:51 »
Habe keine Ahnung von Web und Notes, aber hast es schon einmal so versucht:
     Print "alert(""Fertig ""+ Arg1 + Arg2  + "")"

?
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
------
Jeder muss mal gehen, die Frage ist einfach: Wann, Wohin, Warum... und mit Wem?

Offline Till_21

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • I love Germany
Re: Umfangreiche Eingabevalidierung im Web
« Antwort #2 am: 11.07.02 - 11:46:06 »
Verwende für die "Notes-Anführungsstriche" die Pipe | ...

gruss till
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline Markus

  • Frischling
  • *
  • Beiträge: 29
  • I love YaBB 1G - SP1!
Re: Umfangreiche Eingabevalidierung im Web
« Antwort #3 am: 11.07.02 - 18:20:03 »
Auch
Print "alert(""Fertig ""+ Arg1 + Arg2  + "")"  
wird vom Browser ignoriert.

Till, welches sind die Notes-Anführungstriche?
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline grosses.manitu

  • Junior Mitglied
  • **
  • Beiträge: 66
  • Geschlecht: Männlich
  • Ich liebe deutsche Element Begriffe...
Re: Umfangreiche Eingabevalidierung im Web
« Antwort #4 am: 12.07.02 - 08:23:31 »
Wie sieht den der Sourcecode aus, wenn Du die Seite im Browser aufrufst? Einfach nur den Teil mit dem alert.
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
------
Jeder muss mal gehen, die Frage ist einfach: Wann, Wohin, Warum... und mit Wem?

Offline Markus

  • Frischling
  • *
  • Beiträge: 29
  • I love YaBB 1G - SP1!
Re: Umfangreiche Eingabevalidierung im Web
« Antwort #5 am: 12.07.02 - 09:52:24 »
Der Source-Code enthält keinen Teil mit dem alert. Zumindest nicht bevor und auch nicht nachdem der Agent gelaufen ist. Dies ist nach meinem Verständnis auch korrekt so, da dieser Teil ja dynamisch zur Laufzeit generiert wird. Nachdem der Agent gelaufen ist, sollte wieder die alte Seite angezeigt werden. Vielleicht habe ich aber auch die Wirkungsweise von "Print" nicht verstanden ...

Zum Print statement steht in der Domino Designer Hilfe folgendes:
"...
If you are in Lotus Notes, note that the Print statement writes to the following:
The status bar when executing on a Notes client in non-debug mode.
The status bar and output window when executing on a Notes client in debug mode.
NOTES.LOG when executing on a Domino server.
If the request is from the Web, Print will be re-directed to the source. Print can be used to dynamically generate a Web page via QueryOnEvent"

In der Hilfe findet sich auch ein Beispiel eines Agenten, dessen Code in etwa meinem entspricht:

9. This LotusScript agent terminates by sending JavaScript to the browser. The JavaScript displays a message then loads the "Main View."

Sub Initialize
   Dim s As New NotesSession
   Dim db As NotesDatabase
   Dim dc As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim context As NotesDocument
   Dim arg As String
   Set context = s.DocumentContext
   arg = s.DocumentContext.Query_String(0)
   p1 = Instr(arg, "&")
   If p1 = 0 Then
       Print "Need argument 'open' or 'closed'"
   Else
       arg = Lcase(Mid$(arg, p1 + 1))
       If arg <> "open" And arg <> "closed" Then
           Print "Argument must be 'open' or 'closed'"
       End If
   End If
   Set db = s.CurrentDatabase
   Set dc = db.UnprocessedDocuments
   Set doc = dc.GetFirstDocument
   Do While Not(doc Is Nothing)
       doc.Status = arg
       Call doc.Save(False, True)
       Set doc = dc.GetNextDocument(doc)
   Loop
   Print "<SCRIPT LANGUAGE=JavaScript>"
   Print "alert(""Status changed to '" & arg & "' in all documents"")"
   Print "location.href = ""/Web+test.nsf/Main+View?OpenView"""
   Print "</SCRIPT>"
End Sub9.      This LotusScript agent terminates by sending JavaScript to the browser. The JavaScript displays a message then loads the "Main View."
Sub Initialize
   Dim s As New NotesSession
   Dim db As NotesDatabase
   Dim dc As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim context As NotesDocument
   Dim arg As String
   Set context = s.DocumentContext
   arg = s.DocumentContext.Query_String(0)
   p1 = Instr(arg, "&")
   If p1 = 0 Then
       Print "Need argument 'open' or 'closed'"
   Else
       arg = Lcase(Mid$(arg, p1 + 1))
       If arg <> "open" And arg <> "closed" Then
           Print "Argument must be 'open' or 'closed'"
       End If
   End If
   Set db = s.CurrentDatabase
   Set dc = db.UnprocessedDocuments
   Set doc = dc.GetFirstDocument
   Do While Not(doc Is Nothing)
       doc.Status = arg
       Call doc.Save(False, True)
       Set doc = dc.GetNextDocument(doc)
   Loop
   Print "<SCRIPT LANGUAGE=JavaScript>"
   Print "alert(""Status changed to '" & arg & "' in all documents"")"
   Print "location.href = ""/Web+test.nsf/Main+View?OpenView"""
   Print "</SCRIPT>"
End Sub
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline grosses.manitu

  • Junior Mitglied
  • **
  • Beiträge: 66
  • Geschlecht: Männlich
  • Ich liebe deutsche Element Begriffe...
Re: Umfangreiche Eingabevalidierung im Web
« Antwort #6 am: 12.07.02 - 10:09:02 »
Moment,

Zitat
If the request is from the Web, Print will be re-directed to the source. Print can be used to dynamically generate a Web page via QueryOnEvent"


klar muss der aler im Sourcecode sichtbar sein. Mit dem print statement generierst Du ja dynamisch eine Webseite....
... Also Du rufst doch eine Seite vom Browser auf, oder?
Und dieser wiederum fuer Deinen Agent aus, oder?
Und nachdem dieser gelaufen ist, sollte doch eine Webseite praesentiert werden und dieser beinhaltet Sourcecode....
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
------
Jeder muss mal gehen, die Frage ist einfach: Wann, Wohin, Warum... und mit Wem?

Offline Markus

  • Frischling
  • *
  • Beiträge: 29
  • I love YaBB 1G - SP1!
Re: Umfangreiche Eingabevalidierung im Web
« Antwort #7 am: 12.07.02 - 17:04:46 »
... aber nicht den alert ...
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline Markus

  • Frischling
  • *
  • Beiträge: 29
  • I love YaBB 1G - SP1!
Re: Umfangreiche Eingabevalidierung im Web
« Antwort #8 am: 18.07.02 - 18:15:12 »
Um eine alte Diskussion fortzuführen:
Der "alert" ist aufgetaucht. Merkwürdigerweise verarbeitet der Agent die Print-Befehle nicht, wenn ich das Dokument mit @Command([FileSave]) abschicke.
Lege ich dagegen JavaScript document.forms[0].submit() hinter die Schaltfläche wird der Code ordnungsgemäss ausgeführt. ??? (Das mit der Pipe war übrigens ein sehr guter Tip. Danke nochmal Till. ;))
Allerdings tritt nun das Problem auf, dass ein neues Dokument im Browserfenster angezeigt wird. Mit Hilfe von history.go(-1) kommt man wieder zurück, jedoch scheint das ganze nur zu laufen, wenn man den Code in eine Zeile packt:

Print "<SCRIPT LANGUAGE=JavaScript>" "history.go(-1);"&_
| win=open(location.href=  "/database.nsf/Antwort?OpenForm", "Newwin" , "screenX=460 ,screenY=460 ,width=320,height= 150"); |&_
     | doc = win.document ;| &_
"</SCRIPT>"

läuft. Das ganze in mehrere Print-Anweisungen gepackt führt den history-Befehl erst aus, wenn man das Fenster wieder schließt. Im Moment würde mich noch interessieren, ob es eine Möglichkeit gibt, die Werte im Print-Teil verwendeter JavaScript-Variablen wieder an LS-Variablen zu übergeben.

Gruss Markus
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz