Autor Thema: XPage mit Datenquelle aus anderer nsf lässt sich nicht in Editmode schalten  (Gelesen 10739 mal)

Offline PLi

  • Frischling
  • *
  • Beiträge: 42
  • Geschlecht: Männlich
Ich habe eine Datenbank A in der alle XPages sein sollen und eine Datenbank B in der die Daten liegen und möglichst keine XPages liegen sollen.

Der Anwender soll also Datenbank A im Browser öffnen und wie über ein Portal Daten in der Datenbank B lesen und auch bearbeiten können.
Aktuell arbeite ich mit meinem eigenen User und ich stehe in beiden Datenbanken explizit mit Managerzugriff in der ACL.

Gelöst habe ich es soweit, dass ich eine Redirect Seite habe, die im beforePageLoad die UNID aus der URL in eine RequestScope Variable "docunid" steckt die dann in der Xpage wieder verwendet wird:
Code
<xp:this.data>
	<xp:dominoDocument var="document1"
		databaseName="Entwicklung\DatenbankB.nsf"
		formName="Eingabe" action="editDocument">
		<xp:this.documentId><![CDATA[#{javascript:return requestScope.get("docunid");}]]></xp:this.documentId>
	</xp:dominoDocument>
</xp:this.data>
So komme ich zumindest schon einmal an das korrekte Dokument heran (mit computed Fields in der Xpage überprüft).
   
Wenn ich allerdings über folgenden Button, den Bearbeitungsmodus ändere, so verschwindet er zwar, aber ein zweiter Button, bei dem
Code
rendered="#{javascript:document1.isEditable()==false;}"
steht taucht nicht auf. Ebenso sind Eingabefelder im Editmode nicht sichtbar.      
Code
<xp:button value="In Lesemodus ändern" id="button1"
	rendered="#{javascript:document1.isEditable()==true;}"
	refreshMode="complete">
	<xp:eventHandler event="onclick" submit="true"
		refreshMode="complete">
		<xp:this.action>
			<xp:changeDocumentMode mode="toggle"></xp:changeDocumentMode>
		</xp:this.action>
	</xp:eventHandler>
</xp:button>

Es ist sicherlich nur eine Kleinigkeit, die ich übersehe, aber ich suche sie schon seit Stunden und finde sie einfach nicht.

Wer kann helfen?
Ihr seid ja nur neidisch weil diese leisen Stimmen nur zu mir sprechen...

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Was ist denn der "Maximum Internet Access Level" in Datenbank B?

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Ach: Das kann gar nicht funktionieren, denn der RequestScope ist beim Klick auf den Button leer - die DocUNID verschwunden...

Warum nicht Url Parameter verwenden?

Offline PLi

  • Frischling
  • *
  • Beiträge: 42
  • Geschlecht: Männlich
Warum nicht Url Parameter verwenden?
... wenn ich die Xpage in Datenbank A einfach nur mit den URL-Parametern öffne
Code
http://Servername/Entwicklung/DatenbankA.nsf/XpageInDatenbankA.xsp?databaseName=CN=Servername!!Entwicklung\DatenbankB.nsf&documentId=<UniversalIDdesDocumentsInDB-B>&action=openDocument
habe ich gar keinen Zugriff auf irgendwelche Felder in dem Dokument.

Deshalb dachte ich, dass es so gar nicht geht und habe einen anderen Weg gesucht.

« Letzte Änderung: 17.02.14 - 11:40:16 von PLi »
Ihr seid ja nur neidisch weil diese leisen Stimmen nur zu mir sprechen...

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Genau so würde es aber gehen. Das CN= muss noch aus dem DB Parameter entfernt werden.

Kann denn das Dokument überhaupt (also direkt) in DB B geöffnet werden? Im Browser, ohne XPage?

EDIT:
Liegen die DBs auf dem gleichen Server?
« Letzte Änderung: 17.02.14 - 13:09:23 von Sven Hasselbach »

Offline PLi

  • Frischling
  • *
  • Beiträge: 42
  • Geschlecht: Männlich
Genau so würde es aber gehen.
Dann sind wir schon Zwei mit der Meinung ;)
Das CN= muss noch aus dem DB Parameter entfernt werden.
Der komplette Servername steht bei mir im kanonischen Format in der URL, deshalb hatte ich das CN= am Anfang hier im Post vergessen wegzuschneiden.
Aber auch wenn ich den Servernamen in der URL in die korrekte Windows-Schreibweise ändere, zeigt der Browser mir nicht die Daten des Dokuments.
Kann denn das Dokument überhaupt (also direkt) in DB B geöffnet werden? Im Browser, ohne XPage?
Ja, das geht
EDIT:
Liegen die DBs auf dem gleichen Server?
Ja, beide liegen auf dem gleichen Server im Verzeichnis "Entwicklung"

Wenn ich die Xpage in Datenbank A so verändere, dass einfach nur das Dokument in Datenbank B geöffnet wird, bekomme ich einen
Code
Error 404 

HTTP Web Server: Ausnahme: Element nicht gefunden 
Dies liegt vermutlich daran, dass der Maske in Datenbank B keine Xpage zugeordnet ist, die geöffnet werden soll. Allerdings möchte ich doch die Datenbank B möglichst nicht verändern.
Ihr seid ja nur neidisch weil diese leisen Stimmen nur zu mir sprechen...

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Was heißt
Zitat
Wenn ich die Xpage in Datenbank A so verändere, dass einfach nur das Dokument in Datenbank B geöffnet wird, bekomme ich einen...
?

Und was passiert bei einer hardcodierten XPage, wo Doc UNID und Datenbank fest hinterlegt sind?

Offline PLi

  • Frischling
  • *
  • Beiträge: 42
  • Geschlecht: Männlich
Ich habe folgende XPage in DatenbankA.nsf hardcodiert:
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"
			databaseName="Entwicklung\DatenbankB.nsf"
			formName="Adresse" action="editDocument"
			documentId="59B3EF67064218DCC1257B4A0031C1FF">
		</xp:dominoDocument>
	</xp:this.data>
	TEST<xp:br></xp:br>
	<xp:inputText id="inputText1" value="#{document1.Vorname}"></xp:inputText>
	<br></br>
	<xp:text escape="true" id="computedField1" value="#{document1.Nachname}"></xp:text>
</xp:view>
Die Seite geht auf, aber ist bis auf den Text "TEST" leer.  ???

Ich hätte allerdings erwartet, dass zumindest ein bearbeitbares Feld mit dem Vornamen und der Nachname aus dem Dokument angezeigt wird.

Langsam glaube ich, dass an meinem Testserver irgendetwas falsch konfiguriert ist.
« Letzte Änderung: 17.02.14 - 16:06:50 von PLi »
Ihr seid ja nur neidisch weil diese leisen Stimmen nur zu mir sprechen...

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Was ist mit der ACL (siehe oben)?

Und was steht denn in den Feldern des Dokuments?

Offline PLi

  • Frischling
  • *
  • Beiträge: 42
  • Geschlecht: Männlich
In der ACL der Datenbank B steht der "Max. Internetnamens- und Kennwortzugriff" auf "Editor".

Im Feld Vorname steht der String "Vorname 1" und im Feld Nachname steht der String "Nachname 1".

An diese Daten komme ich ja nach der eingangs beschriebenen Methode durch "unterjubeln" der UNID auch heran. Ich verstehe nur noch nicht warum die Standard-Methode nicht funktioniert wie sie sollte und warum das mit dem Editmode nicht funktioniert.
Ihr seid ja nur neidisch weil diese leisen Stimmen nur zu mir sprechen...

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Und wenn man den requestScope zum Testen mal auf sessionScope umstellt, geht alles weiterhin?

Wie sieht der Redirect aus?

Offline PLi

  • Frischling
  • *
  • Beiträge: 42
  • Geschlecht: Männlich
In der Zwischenzeit gabe es ein paar Forum Nachrichten zwischen Hr. Hasselbach und mir und nach einigen Tests ist die Ursache für mein Problem nun gefunden.
Mein Domino Designer Client hat irgendein Problem und die Xpages und Custom Controls nicht sauber kompiliert.

Inzwischen habe ich die Datenbank auf dem Server mit einer anderen Designer-Client-Installation auf einam anderen Rechner neu builden lassen und jetzt habe ich (dort) für meine 11 XPages und 11 Custom Controls unter Local\xsp 22 passende Java Dateien.

Im Designer-Client bei mir am lokalen Rechner sind es auch nach Umbenennung des Workspace Ordners und Bereinigen und builden nach wie vor nur 3 Java-Dateien. also werde ich wohl meinen lokalen Client einmal komplett neu installieren.

Vielen Dank an Hr. Hasselbach für seine Bemühungen!

Ihr seid ja nur neidisch weil diese leisen Stimmen nur zu mir sprechen...

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz