{"id":316,"date":"2011-11-03T17:48:18","date_gmt":"2011-11-03T15:48:18","guid":{"rendered":"http:\/\/hasselba.ch\/blog\/?p=316"},"modified":"2011-11-03T17:48:18","modified_gmt":"2011-11-03T15:48:18","slug":"quick-n-dirty-manipulation-von-ui-komponenten-via-ssjs","status":"publish","type":"post","link":"https:\/\/hasselba.ch\/blog\/?p=316","title":{"rendered":"Quick-n-Dirty: Manipulation von UI Komponenten via SSJS"},"content":{"rendered":"<p>Serverseitig lassen sich die die Items einer Auswahlbox (z.B. eine Combobox, Listboxen, usw.) auslesen und ggf. manipulieren. Hier eine Combobox mit drei Items:<\/p>\n<pre>&lt;xp:comboBox id=\"comboBox1\"&gt;\r\n\u00a0\u00a0 &lt;xp:selectItem itemLabel=\"A\" itemValue=\"1\"&gt;&lt;\/xp:selectItem&gt;\r\n\u00a0\u00a0 &lt;xp:selectItem itemLabel=\"B\" itemValue=\"2\"&gt;&lt;\/xp:selectItem&gt;\r\n\u00a0\u00a0 &lt;xp:selectItem itemLabel=\"C\" itemValue=\"3\"&gt;&lt;\/xp:selectItem&gt;\r\n&lt;\/xp:comboBox&gt;<\/pre>\n<p>Um via SSJS die Items der UI Komponente und deren Eigenschaften zu erhalten, kann man wie folgt darauf zu greifen:<\/p>\n<pre>function listSelectableValues( id ) {\r\n\u00a0\u00a0 var cBox = getComponent( id );\r\n\u00a0\u00a0 var cList:java.util.ListIterator;\r\n   cList = ComboBox.getChildren().listIterator();\r\n\u00a0\u00a0 while (ChildrenList.hasNext()) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 var c = ChildrenList.next()\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 print (\"Label: \" + c.getItemLabel() );\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 print (\"Value: \" + c.getItemValue() );\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 print (\"IsDisabled: \" + c.isDisabled() ); \r\n\u00a0\u00a0 }\r\n}\r\n\r\nlistSelectableValues( 'comboBox1' );<\/pre>\n<p>Auf der Serverkonsole werden nun die Eigenschaften der drei Items ausgegeben.<\/p>\n<p>Nat\u00fcrlich lassen sich die Items auch manipulieren:<\/p>\n<pre>&lt;xp:button value=\"Label\" id=\"button1\"&gt;\r\n\u00a0\u00a0 &lt;xp:eventHandler event=\"onclick\" submit=\"true\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 refreshMode=\"partial\" refreshId=\"comboBox1\"&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xp:this.action&gt;&lt;![CDATA[#{javascript:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 var cBox = getComponent( 'comboBox1' );\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 var cBoxChildren = cBox.getChildren();\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 var cBoxChild = cBoxChildren.get(0);\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ --- disablen\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cBoxChild.setItemDisabled(true);\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ --- das Label \u00e4ndern\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cBoxChild.setItemLabel(\"DISABLED\");\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ --- den Value \u00e4ndern\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cBoxChild.setItemValue(\"disabled\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 }]]&gt;&lt;\/xp:this.action&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/xp:eventHandler&gt;\r\n&lt;\/xp:button&gt;<\/pre>\n<p>Der Button f\u00fchrt einen PartialRefresh auf die ComboBox aus, deaktiviert das erste Item (es ist nicht mehr selektierbar) und \u00e4ndert sowohl das Label als auch den Wert des ersten Items.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Serverseitig lassen sich die die Items einer Auswahlbox (z.B. eine Combobox, Listboxen, usw.) auslesen und ggf. manipulieren. Hier eine Combobox mit drei Items: &lt;xp:comboBox id=&#8220;comboBox1&#8243;&gt; \u00a0\u00a0 &lt;xp:selectItem itemLabel=&#8220;A&#8220; itemValue=&#8220;1&#8243;&gt;&lt;\/xp:selectItem&gt; \u00a0\u00a0 &lt;xp:selectItem itemLabel=&#8220;B&#8220; itemValue=&#8220;2&#8243;&gt;&lt;\/xp:selectItem&gt; \u00a0\u00a0 &lt;xp:selectItem itemLabel=&#8220;C&#8220; itemValue=&#8220;3&#8243;&gt;&lt;\/xp:selectItem&gt; &lt;\/xp:comboBox&gt; Um via &hellip; <a href=\"https:\/\/hasselba.ch\/blog\/?p=316\">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,89,9,82,76,74],"tags":[7,31,4,86,25,5,3],"class_list":["post-316","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-java","category-javascript","category-server","category-ssjs","category-xpages","tag-domino","tag-java","tag-js","tag-jsf","tag-partial-refresh","tag-ssjs","tag-xpages"],"_links":{"self":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/316","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=316"}],"version-history":[{"count":4,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/316\/revisions"}],"predecessor-version":[{"id":320,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/316\/revisions\/320"}],"wp:attachment":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=316"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=316"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=316"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}