2012-03-29 9 views
1

Dies ist eine Erweiterung meines earlier question. Wenn wir eine SSJS Bibliothek DXL exportieren bekommen wir Ausgabe, die diese enthält:Kodierungsschema für SSJS-Bibliothek beim Export über DXL

<item name="$ServerJavaScriptLibrary" sign="true"> 
<rawitemdata type="1"> 
....ENCODED SSJS.... 
</rawitemdata> 
</item> 

Ich dachte vorher, dass das Codierungsschema Base64 hier verwendet. Aber nachdem ich erfolglos versucht habe, SSJS-Bibliothek zu importieren, denke ich, dass es nicht ist. Während der Suche fand ich, dass die type="1" bezieht sich auf TYPE_COMPOSITE während type="14 "bezieht sich auf Base64 (bitte korrigieren Sie mich, wenn ich falsch in diesem). Ich habe versucht, type="14" in meinem XML-Fil, setzen Base64 codierten Code in rawitemdata Tag und versuchte dann die Datei importieren. es erstellt SSJS Bibliothek in der Datenbank aber ihr Inhalt war leer.

ich this link gefunden, wo es durch die Codierung in Base64 ein Thema zu importieren, aber es prepends die codierte Zeichenfolge durch „YQAYAAAAAAA6AAAAAQAAAAAAAAAAAAAAYABMAAAAOgA6AAAAAAAAAAAA“. ich habe versucht, vorangestellt wird es in meinem codierten SSJS-Code und dann importieren Sie es aber immer noch nicht erfolgreich.

Welches Kodierungsschema sollte verwendet werden, damit ich die importieren kann SSJS-Code in meiner Datenbank?

Antwort

1

Eine SSJS-Bibliothek wird in Richtextdatensätzen gespeichert. Die codierte Zeichenfolge vor den Daten der SSJS-Bibliothek ist die Base64-codierte Header-Information, die diese Datensätze enthält.

Hier können Sie ein funktionierendes Beispiel finden, wie eine SSJS Bibliothek mit DXL in eine Datenbank kapseln und importieren: Quick-n-Dirty: Import SSJS libraries with DXL

+0

Danke eine Tonne Sven! Dein Code hat funktioniert. Ich habe es auf meinem lokalen Rechner versucht und zu diesem Zweck musste ich die Verwendung von 'sessionAsSignerWithFullAccess' durch' session' ersetzen. Aber wenn ich die importierte Datei am Ende öffne, sehe ich 4 zusätzliche Zeichen - ein Sonderzeichen (ein schwarz gefülltes Quadrat), Leerzeichen und Zeichen von 's' und 'd'. Irgendwelche Ideen warum? Liegt es daran, dass ich das auf der lokalen Maschine ausführe? Ich konnte dies in Ihrem Blog nicht kommentieren, da es mir immer die Meldung FEHLER: Unlesbare CAPTCHA-Token-Datei anzeigt, obwohl Sie das richtige Wort für Captcha eingegeben haben. – Naveen

+0

@Naveen: Danke für die Rückmeldung. Das letzte WP-Update hat das Captcha-Plugin beendet, es funktioniert jetzt wieder. Zu deiner Frage: Hmm, momentan kann ich die "Extra" -Zeichen am Ende nicht erklären, denn das ist der Code deiner SSJS-Bibliothek. Ist das ein generelles Problem für * jede * Bibliothek oder nur für ein bestimmtes? –

+0

Nach ein bisschen Trial-and-Error fand ich eine interessante Beobachtung. Wenn ich versuche, eine Funktion wie 'test1 = function() {}' zu importieren. Dann gibt es kein Problem mit der importierten Skriptbibliothek. Aber wenn ich versuche, eine Funktion wie 'function test1() {}' zu importieren. Dann hat die importierte Skriptbibliothek am Ende einen speziellen Charakter. Ich weiß nicht warum! Der Fehler in der Ansicht "Probleme" zeigt diese Meldung "Lexikalischer Fehler in Zeile 17, Spalte 2. Aufgetreten:" \ u25a0 "(9632), nach:" "'. Irgendwelche Ideen warum?Außerdem konnte ich deinen Blog immer noch nicht kommentieren, da er mir jedes Mal, wenn ich versucht habe, die Nachricht "Spam gelöscht" zu zeigen. – Naveen

0

Die vorangestellte Zeichenfolge ist eine Prüfsumme; Beim Exportieren einer Bibliothek in DXL enthält Base64 ein Präfix, mit dem der Importeur den Inhalt überprüfen kann. Diese Prüfsummenmethode wird auch beim Exportieren von XPage- und Custom Control-Designelementen in DXL verwendet. Wenn Sie diesen DXL also genau so importieren, wie er exportiert wurde, ist der Import erfolgreich. Wenn Sie jedoch den codierten Inhalt ändern und ihn mit demselben Präfix voranstellen, schlägt der Import fehl, da die Prüfsumme nicht mehr übereinstimmt.

Ich habe Informationen von IBM angefordert, welche Algorithmen zum Generieren dieser Prüfsumme verwendet werden, um den Import von extern generierten Designelementen zu ermöglichen, aber noch nie eine Antwort erhalten haben.

+0

schließlich eine Antwort ... :) In diesem [link] (http: // hermes .intec.co.uk/Intec/Blog.nsf/dx/Importieren% 20agent.txt/$ datei/Importieren% 20agent.txt) Der Code importiert das Thema und codiert in Base64. Anschließend wird es mit einigen Änderungen in 'tag eingefügt. Wenn Sie davon irgendwelche Ideen bekommen, dann sagen Sie es mir. – Naveen