Autor Thema: XPage QuerySave und PostSave  (Gelesen 2839 mal)

Offline tfrenz

  • Aktives Mitglied
  • ***
  • Beiträge: 242
  • Geschlecht: Männlich
XPage QuerySave und PostSave
« am: 30.03.17 - 17:28:05 »
Hallo,
ich habe mir eine Verwaltung für Vereinsmitglieder über die jahre gebaut.
In der Eingabemaske arbeite ich beim Speicher mit PostSave und QuerySave Lotusscript.
Da werden z.B. auf richtigkeit einer telefonnummer überprüft, telefonnummer für Sync mit PerName auf International gesetz, Mitgliedsnummer überprüft, geänderte Felder in ein Feld History schreiben, .....

Habe mir nun mal Xpage angesehen, und mir die Ansichten und Forms gebaut.
Das ganze mit CustomControl.
Funktioniert alles schon gut, auch der Edit Modus, uns Save.
Aber wie mache ich nun solche eine Validierung?
Da komme ich nicht weiter.
Gruß
Thomas

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: XPage QuerySave und PostSave
« Antwort #1 am: 31.03.17 - 09:14:41 »
Moin

Da gibt es pro Feld die Validators https://www-10.lotus.com/ldd/ddwiki.nsf/dx/validation-on-an-xpage.htm .
Oder Du machst es im Submit Event des Forms
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Re: XPage QuerySave und PostSave
« Antwort #2 am: 31.03.17 - 09:59:02 »
Alternativ kannst Du auch deinen bestehenden LotusScript Code weiterverwenden, wenn sich die Validierung hierfür auf Backend-Klassen beschränkt.

Hierfür kann in den jeweiligen Events der Datenquelle ein Agent aufgerufen werden, der das aktuelle Dokument per DocumentContext übergeben bekommt, und in einem temporären Feld das Ergebnis der Operation zurück liefert. Das Event kann dann mit "return false" abgebrochen werden.

So was in etwa:

Code
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">

	<xp:this.data>
		<xp:dominoDocument var="document1">
			<xp:this.querySaveDocument>
				<![CDATA[#{javascript:
				var agent:NotesAgent = database.getAgent("Validator");
				var doc:NotesDocument = document1.getDocument( true );
				agent.runWithDocumentContext( doc );

				var result:String = doc.getItemValueString( "SaveOK" );
				doc.removeItem("SaveOK")
				if( result == "0" )
					return false;


				}]]>
			</xp:this.querySaveDocument>
		</xp:dominoDocument>
	</xp:this.data>

	<xp:button value="Label" id="button1">
		<xp:eventHandler event="onclick" submit="true"
			refreshMode="complete">
			<xp:this.action>
				<xp:save />
			</xp:this.action>
		</xp:eventHandler>
	</xp:button>

</xp:view>

Der Agent muss die "Run as Webuser"-Eigenschaft aktiviert haben

Offline tfrenz

  • Aktives Mitglied
  • ***
  • Beiträge: 242
  • Geschlecht: Männlich
Re: XPage QuerySave und PostSave
« Antwort #3 am: 17.04.17 - 11:50:49 »
Hallo, habe es mit dem Aufrruf des Agenten umgesetzt.
Soweit funktioniert alles.
Nur habe ich in Notes z.B. Felder nur zum "Computed for Display", die habe ich als "Hidden Input" nachgebaut.
Die werden aber nicht zum Agent mit übergeben.
Wie kann ich das sonst umsetzen?

Danke
Thomas
Gruß
Thomas

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Re: XPage QuerySave und PostSave
« Antwort #4 am: 18.04.17 - 11:47:53 »
Werte temporär ins Dokument, dass an den Agenten übergeben wird, reinschreiben, danach wieder rauslöschen. Wie mit dem Feld "SaveOK".

Offline tfrenz

  • Aktives Mitglied
  • ***
  • Beiträge: 242
  • Geschlecht: Männlich
Re: XPage QuerySave und PostSave
« Antwort #5 am: 27.04.17 - 17:15:31 »
Danke Sven,
hat super grklappt.
Gruß
Thomas

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz