2012-03-30 4 views
2

Meine xpage haben ein einfaches 'status' Feld und einen xp: link in einer Datenbank. Das xp: link eine Script-Aktion müssen B Datenbank umleiten:Wie übergebe ich Werte zwischen xpages in verschiedenen Notes Datenbanken?

<xp:eventHandler event='onclick' submit='true' refreshMode='complete'> 
    <xp:this.action><xp:executeScript> 
    <xp:this.script><![CDATA[#{javascript:facesContext.getExternalContext().redirect('http://domino/databaseB.nsf/testLink.xsp'); 
}]]></xp:this.script></xp:executeScript> 
    </xp:this.action></xp:eventHandler> 

Wie kann ich den 'Status' Wert testLink.xsp in B-Datenbank übergeben?

Danke!

Antwort

5

Der beste und einfachste Weg wäre das Hinzufügen eines Abfrageparameters wie "testLink.xsp? Status = xxx".

Natürlich würden Sie in diesem Fall die in der URL gesendeten Informationen enthüllen. Wenn dies nicht erwünscht ist (Sie möchten nicht, dass der Benutzer den Wert anzeigt, den Sie übertragen haben), können Sie eine Zwischenseite (z. B. einen XAgent) in Datenbank B erstellen. Sie senden zwei Parameter an diese Seite;

/dbB.nsf/redirect.xsp?status=XXX & RedirectTo = testLink.xsp

Dann fügen Sie diesen Wert auf die sessionScope am redirect.xsp und den Benutzer auf die andere Seite umgeleitet werden.

3

Eine andere Option, etwas komplizierter, aber "versteckt": In Nathan's XSP Starter kit gibt es eine Vorlage für eine "Server Scope" Scope-Implementierung. Wenn Sie dort Isolationscode hinzufügen (z. B. eine Liste mit Einträgen pro Benutzer), können Sie problemlos Werte zwischen Anwendungen übergeben. Sie möchten einen Sitzungslistener hinzufügen, um die Variable eines Benutzers nach Ablauf der Sitzung zu löschen.

Zuletzt: Sie könnten die Anwendung (Ihre xsp) in einer einzigen Datenbank behalten und Ihre Datenquelle einfach auf die andere Datenbank verweisen.

+0

Ich stimme der zweiten Option von Stephan zu und tendiere dazu, da es einfacher ist, alle xpages in einer einzigen Datenbank zu halten und auf externe Datenquellen zu verweisen. – pipalia