{"id":442,"date":"2011-12-23T17:36:40","date_gmt":"2011-12-23T15:36:40","guid":{"rendered":"http:\/\/hasselba.ch\/blog\/?p=442"},"modified":"2011-12-27T17:08:56","modified_gmt":"2011-12-27T15:08:56","slug":"domino-datasources-on-the-fly-1-basics","status":"publish","type":"post","link":"https:\/\/hasselba.ch\/blog\/?p=442","title":{"rendered":"Domino Datasources On-the-Fly (1): Basics"},"content":{"rendered":"<p>Um eine Datasource On-the-Fly mittels SSJS zu erstellen, muss zum Einen ein neues Datasource-Objekt instanziert werden, zum Anderen die neue Datenquelle der XPage bekannt gegeben werden.<\/p>\n<p>Mit dem folgenden Code wird eine neue Document Datasource namens <em>document1<\/em> erstellt und dann dem <em>UIViewRoot<\/em>-Element bekannt gemacht:<\/p>\n<pre>var data = new com.ibm.xsp.model.domino.DominoDocumentData();\r\ndata.setVar(\"document1\");\r\nview.addData(data);<\/pre>\n<p>Direkt nach der Anlage l\u00e4sst sich die Datenquelle leider noch nicht im Code verwenden, d.h. ein &#8222;<em>document1.save()<\/em>&#8220; schl\u00e4gt an dieser Stelle fehl. Die neue Datasource kann aber in einem anderen Code-Segment wie gewohnt verwendet werden.<\/p>\n<p>Hier eine Beispiel-Implementierung in eine XPage:<\/p>\n<pre>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;xp:view xmlns:xp=\"http:\/\/www.ibm.com\/xsp\/core\"&gt;\r\n\r\n&lt;xp:button value=\"Create Datasource\" id=\"button1\"&gt;\r\n\u00a0\u00a0 &lt;xp:eventHandler event=\"onclick\" submit=\"true\"\r\n      refreshMode=\"complete\"&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xp:this.action&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;![CDATA[#{javascript:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 var data = new com.ibm.xsp.model.domino.DominoDocumentData();\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0data.setVar(\"document1\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 data.setFormName(\"DynData\"); \u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 view.addData(data);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }]]&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/xp:this.action&gt;\r\n\u00a0\u00a0 &lt;\/xp:eventHandler&gt;\r\n&lt;\/xp:button&gt;\r\n&lt;xp:button value=\"Use Datasource\" id=\"button2\"&gt;\r\n\u00a0\u00a0 &lt;xp:eventHandler event=\"onclick\" submit=\"true\"\r\n     refreshMode=\"complete\"&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xp:this.action&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xp:actionGroup&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 &lt;xp:executeScript&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 &lt;xp:this.script&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;![CDATA[#{javascript:\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 document1.setValue(\"Feld\", \"ABC\");\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }]]&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 &lt;\/xp:this.script&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/xp:executeScript&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 &lt;xp:saveDocument var=\"document1\" \/&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/xp:actionGroup&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/xp:this.action&gt;\r\n\u00a0\u00a0 &lt;\/xp:eventHandler&gt;\r\n&lt;\/xp:button&gt;\r\n&lt;\/xp:view&gt;<\/pre>\n<p>Die XPage besteht aus zwei Buttons: Mit &#8222;<em>Create Datasource<\/em>&#8220; wird eine neue Datasource angelegt, mit &#8222;<em>Use Datasource<\/em>&#8220; die neue DocumentDatasource verwendet und gespeichert. Wird der Button &#8222;<em>Use Datasource<\/em>&#8220; geklickt, bevor die neue Datasource angelegt wurde, tritt (logischerweise) ein Fehler auf.<\/p>\n<p><a title=\"Domino Datasources On-the-Fly (2): DominoDataView\" href=\"https:\/\/hasselba.ch\/blog\/?p=449\">Im n\u00e4chsten Teil<\/a> geht es um die m\u00f6glichen Eigenschaften des <em>Domino Document Data<\/em>&#8211; und des <em>Domino View Data<\/em><em><\/em>-Objektes.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Um eine Datasource On-the-Fly mittels SSJS zu erstellen, muss zum Einen ein neues Datasource-Objekt instanziert werden, zum Anderen die neue Datenquelle der XPage bekannt gegeben werden. Mit dem folgenden Code wird eine neue Document Datasource namens document1 erstellt und dann &hellip; <a href=\"https:\/\/hasselba.ch\/blog\/?p=442\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[89,26,76,74],"tags":[7,31,86,5,3],"class_list":["post-442","post","type-post","status-publish","format-standard","hentry","category-java","category-jsf","category-ssjs","category-xpages","tag-domino","tag-java","tag-jsf","tag-ssjs","tag-xpages"],"_links":{"self":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/442","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=442"}],"version-history":[{"count":7,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/442\/revisions"}],"predecessor-version":[{"id":448,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/442\/revisions\/448"}],"wp:attachment":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=442"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=442"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=442"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}