{"id":487,"date":"2012-02-01T12:49:55","date_gmt":"2012-02-01T10:49:55","guid":{"rendered":"http:\/\/hasselba.ch\/blog\/?p=487"},"modified":"2012-02-01T12:49:55","modified_gmt":"2012-02-01T10:49:55","slug":"datacontext-variablen","status":"publish","type":"post","link":"https:\/\/hasselba.ch\/blog\/?p=487","title":{"rendered":"DataContext-Variablen"},"content":{"rendered":"<p>Will man auf die <em>DataContext<\/em>-Variablen einer XPage zugreifen, gibt es die M\u00f6glichkeit, die Methode <em>getDataContexts()<\/em> zu verwenden, die f\u00fcr jede UIComponent existiert. Die Methode liefert eine <em>java.util.List<\/em> zur\u00fcck, die sich z.B. in einen Array verwandeln l\u00e4sst, um auf die einzelnen Mitglieder zu zugreifen. Die Mitglieder wiederum sind vom Typ <em>com.ibm.xsp.model.DataContext<\/em>, mit <em>getVars()<\/em> l\u00e4sst sich auf den Inhalt der jeweiligen Variable zugreifen.<\/p>\n<p>Hier ein Beispiel:<\/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:this.dataContexts&gt;\r\n      <strong>&lt;xp:dataContext var=\"dcVar\" value=\"1\" \/&gt;<\/strong>\r\n   &lt;\/xp:this.dataContexts&gt;\r\n\r\n   &lt;xp:text escape=\"true\" id=\"computedField1\"&gt;\r\n      &lt;xp:this.value&gt;\r\n         &lt;![CDATA[#{javascript:\r\n         var lc:java.util.List = <strong><span style=\"color: #ff0000;\">view<\/span><\/strong>.getDataContexts();\r\n         var dc:com.ibm.xsp.model.DataContext = lc.toArray()[0];\r\n         dc.getVars().toString()\r\n         }]]&gt;\r\n      &lt;\/xp:this.value&gt;\r\n   &lt;\/xp:text&gt;\r\n&lt;\/xp:view&gt;<\/pre>\n<p><em>[Fett: Die DataContext-Variable \/\/ Rot: Die UIComponent, an der die Variable &#8222;h\u00e4ngt&#8220;]<\/em><\/p>\n<p>In diesem Beispiel ist die Variable direkt der UIViewRoot-Komponente zugeordnet worden. Ist die Variable an einer anderen\u00a0UIComponent (z.B. einem Custom Control), muss auf den <em>DataContext<\/em> dieser Komponente zugegriffen werden. Ist also eine <em>DataContext<\/em>-Variable im Custom Control definiert, nicht jedoch in der eigentlichen XPage, so w\u00fcrde ein <em>view.getDataContexts()<\/em> nichts zur\u00fcck liefern.<\/p>\n<p>Um auf die Variablen eines Custom Controls zuzugreifen, muss also entweder der komplette Komponentenbaum durchlaufen werde, oder das Custom Control muss mit <em>id<\/em> definiert sein, um referenziert werden zu k\u00f6nnen.<\/p>\n<p>Hier das Custom Control <em>ccDCVar<\/em>:<\/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:this.dataContexts&gt;\r\n      <strong>&lt;xp:dataContext var=\"dcVarCC\" value=\"2\" \/&gt;<\/strong>\r\n   &lt;\/xp:this.dataContexts&gt;\r\n\r\n&lt;\/xp:view&gt;<\/pre>\n<p>Die XPage, die auf das Custom Control zugreift, kann dann wie folgt aufgebaut sein:<\/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\"\r\n         xmlns:xc=\"http:\/\/www.ibm.com\/xsp\/custom\"&gt;\r\n   \r\n   &lt;xc:ccDCVar <strong><span style=\"color: #ff0000;\">id=\"cc1\"<\/span><\/strong>&gt;&lt;\/xc:ccDCVar&gt;\r\n\r\n   &lt;xp:text escape=\"true\" id=\"computedField1\"&gt;\r\n      &lt;xp:this.value&gt;\r\n         &lt;![CDATA[#{javascript:\r\n         var lc:java.util.List = <strong>getComponent(\"<span style=\"color: #ff0000;\">cc1<\/span>\")<\/strong>.getDataContexts();\r\n         var dc:com.ibm.xsp.model.DataContext = lc.toArray()[0];\r\n         dc.getVars().toString()\r\n         }]]&gt;\r\n      &lt;\/xp:this.value&gt;\r\n   &lt;\/xp:text&gt;\r\n&lt;\/xp:view&gt;<\/pre>\n<p><em>\u00a0[Fett: Zugriff auf die\u00a0UIComponent mittels getComponent()\u00a0 \/\/ Rot: Id des Custom Controls]<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Will man auf die DataContext-Variablen einer XPage zugreifen, gibt es die M\u00f6glichkeit, die Methode getDataContexts() zu verwenden, die f\u00fcr jede UIComponent existiert. Die Methode liefert eine java.util.List zur\u00fcck, die sich z.B. in einen Array verwandeln l\u00e4sst, um auf die einzelnen &hellip; <a href=\"https:\/\/hasselba.ch\/blog\/?p=487\">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":[1,9,26,76,74],"tags":[7,4,86,5,32,3],"class_list":["post-487","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-javascript","category-jsf","category-ssjs","category-xpages","tag-domino","tag-js","tag-jsf","tag-ssjs","tag-tipp","tag-xpages"],"_links":{"self":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/487","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=487"}],"version-history":[{"count":10,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/487\/revisions"}],"predecessor-version":[{"id":1114,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/487\/revisions\/1114"}],"wp:attachment":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=487"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=487"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=487"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}