Domino 9 und frühere Versionen > ND9: Entwicklung

XPage QuerySave und PostSave

(1/2) > >>

tfrenz:
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.

umi:
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

Sven Hasselbach:
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>
--- Ende Code ---

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

tfrenz:
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

Sven Hasselbach:
Werte temporär ins Dokument, dass an den Agenten übergeben wird, reinschreiben, danach wieder rauslöschen. Wie mit dem Feld "SaveOK".

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln