{"id":1368,"date":"2014-03-02T13:07:07","date_gmt":"2014-03-02T11:07:07","guid":{"rendered":"http:\/\/hasselba.ch\/blog\/?p=1368"},"modified":"2014-03-02T13:07:07","modified_gmt":"2014-03-02T11:07:07","slug":"xpages-events-actionlisteners-parameters","status":"publish","type":"post","link":"https:\/\/hasselba.ch\/blog\/?p=1368","title":{"rendered":"XPages: Events, ActionListeners &#038; Parameters"},"content":{"rendered":"<p>To access the event parameters of an event within your <em>actionListener<\/em>, you have to access the source object of your <em>actionEvent<\/em> object:<\/p>\n<pre><code>package ch.hasselba.xpages;\r\n\r\nimport java.util.List;\r\nimport javax.faces.event.AbortProcessingException;\r\nimport javax.faces.event.ActionEvent;\r\nimport com.ibm.xsp.complex.Parameter;\r\nimport com.ibm.xsp.component.xp.XspEventHandler;\r\n\r\npublic class MyActionListener implements javax.faces.event.ActionListener {\r\n\r\n\u00a0\u00a0 \u00a0public void processAction(ActionEvent event)\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0throws AbortProcessingException {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0XspEventHandler eventHandler = (XspEventHandler) event.getSource();\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0List&lt;Parameter&gt; params = eventHandler.getParameters();\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0for (Parameter p : params) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0System.out.println(p.getName() + \" -&gt; \" + p.getValue());\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0}\r\n}<\/code><\/pre>\n<p>Here is an example XPage:<\/p>\n<pre><code>&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\u00a0\u00a0 \u00a0&lt;xp:button\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0value=\"Label\"\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0id=\"buttonAction\"&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;xp:eventHandler\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0event=\"onclick\"\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0submit=\"true\"\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0immediate=\"true\" refreshMode=\"norefresh\"&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;xp:this.parameters&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;xp:parameter\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0name=\"param\"\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0value=\"#{javascript:java.lang.System.currentTimeMillis()}\"&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;\/xp:parameter&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;\/xp:this.parameters&gt;\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;xp:this.actionListeners&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;xp:actionListener type=\"ch.hasselba.xpages.MyActionListener\" \/&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;\/xp:this.actionListeners&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;\/xp:eventHandler&gt;\r\n\r\n\u00a0\u00a0 \u00a0&lt;\/xp:button&gt;\r\n\r\n&lt;\/xp:view&gt;<\/code><\/pre>\n<p>You can see the result on the console when the button is clicked:<\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgwAAAA+CAIAAADIydTXAAAJqklEQVR4nO2dTc70NAyAexCWXKK77yyIissgVUgchd7hW7Jg1Tuw4QLDon9JbCdO06Hv0OdRBPNl0sROnDjNvK27V8Bff37\/68\/vy4dv3779\/tuvvww\/dQHjPA3RP8Or16\/8mV3Xdd0wLXnzuGf145wUWrOWcn1N5v7PaYga6zsVXc66OhWNZNfpSI36WKKgV5p6SV5uNaRdXjWakioL8aq5tC7abeyl02z1TcPWJ0u9WwdFSmqZQV7RcGKDDBgmOY6a0Sq9pDBM83gMkxB0nrdKYlsSE2Mt+cfPR8+M8+s1j0sJxzyJFc8a245raou8tC2P1WVnXDJMaWb7NFQNp9G8w3ZqnQT4oevgw1F8MDyCSieROEJwsPp2ug0+GG0fDM+gykkAAMCzwEkAAIAJTgIAAExwEgAAYIKTAAAAE5wEAACY4CQAAMCk7TmJ5RGA5C+n\/Zldtz4MWP7b6+1BwqikK7PuaUNdzvSx6mydqUY1z0loGh1Pqhblz3ZI8XK9IVuk06NZZyG2oPJhXldPN3ayi2PQj0\/p47Sveez1zFqN4kr+Ca\/av\/rnFT1CvD7k\/CB8U7vruuOhkPw80scoHIvEmLZv1LaUJ9ODYqZ9+i7XNfISqnnitRzTcD5zVWkei08j98v1a\/G+NnPJn6apuACocg7Ta68zeaReq1PXyPPEtSr8ntcNU35Wq5dbwkvUhjIinR7NSguRbUiNgoeB+0IdjZ3s56h+E2n7\/yrtUkDNTBQpDZ1oUhr\/0HXDNM\/z0WHz578DoB9nt1P3T+1+nPdujN524bO643IhgMyXmaopWvbpvFzVqIIWJ9GeufRtki\/fJBMUOAbGn7nle98rYC4zcRerdaoa5erUy6iiFuQvXF5hH+X+7Nyj6ZC2UKe5\/9E0SnyE05aiSt\/mJLJNaK8AiiR1rIVHsahrDjc0TcvHcd4\/rk0VN5nLnce+TU2ufUW3KUupeRyiowdRMnrN0PoaptrbON9rpwItylM77GylfMnqdCehjmBhWEt24r68oFGRO51EP87zKPOzE\/v47M+MdmsOK1SE78VJm1qnoZFeZ7Zdawk+c7kUPkvYUEYk52h6pM1k6ouArdE5WwrLX7W\/jg4j2pyEV6r4lvrYUQZ3TuM8Dcd\/jqYc9hG+fm+Y9gV9GHYfIM5H5rEP729Eye22bt0RO+enLtllUzvadytvgSxYXXjcFPTwNE3piY+aGcqVz\/Rfbmrk5EYnsZuE44CiyUmEEyZ67+VBcn5X3m4odWY1anQSy4316csT4TMkDfmdhH80TQlrtzlSI8dq2tjJNdI130kE5mk2Y91wyE3M8mlb6uvdYdzdW73WEbxc8JWSmxDlTVx2wh4FakbfVi58X61ynOy2uvBk6qUdVymZhzbqK42DzJrLsxoVudFJJC8UzgjZeNzkbygjfPKVWmemoZbjpsX914itn5kUZZAN+Y+bLunk2oUrLe\/YijZ2sp8rj5sy2KdSwzSPvXI6sWzozziJUML9FxX1mEYOhVrS7ySKsp2+k8h+5cq0xQ5v5+RWUs3sDFOUmVWX5zUqcKOTsPLlnqAfp32+bZ\/cmfFs8NhhLE94Z739FlSq89ydhKqR9edCvl7ShDcuVxtSRcpr9ObjJlOjzt69Fm3J9xd2dfxHTiLokGAZ3qoMf51Wf83ePjt24dFRxVpZUEvyI6riJGTJK5xE1a8S5akd1zyX5pGQOii5HcAmn4cpOI4Qmaop6vbpvlzTqIYWJ+GPHmOFlDnugwg6pGqU3mUflTT1krzcaki7vGo0JVUW4lVzaf1c0CG7k0+zVTkRdEj520yCDlmZqimWFoHC5ZZGfsIqCTr0Pug6+HAIOvRUKp1E4gjBAUGH4PPR9sHwDKqcBAAAPAucBAAAmOAkAADABCcBAAAmOAkAADDBSQAAgAlOAgAATNqekyDokFJnqhFBh\/SGvBZiCyof5nX1tNpLbuF9EHToy\/HRQYdOyHluEdAI1STokConQYdUkU6PZqWFyDauDzrkF94PQYfeTj8+JOiQX87GRUCnxUm0Zy59W3zBX+NbYLd8gg457eOJQYeqhPdA0CGCDoVXeTPjr2vlvG4RCLjTSfQEHTLLWEvwmcul8FnChjIiOUfTI20mU18EbI3O2VKt8B4IOkTQoaCHm4MO+eS8ahGIuNFJEHTIo+beHEGHUq4LOlQrvE+65juJwDzNZqwbDrmJIeiQ95DgiwYd8sh5ySKQcqOTSF4onBGy8bjJ31BG+OQrtc5MQy3HTQQd8lZyNuhQrfAeCDqUxpOQJf1Ooijb\/z3okFOk9kVA4UYnYeXLPQFBh7TCBB26LOhQrfAeCDqUOglZ8gonUfWrRHlqxzXPpXkkpH5H0CG\/nHWLgJcWJ+GPHlMVpkYZdfVPTj2Z+z9XIxTlY1yRSQp1EnTo04IO1QjvZGtkIuiQ8qedBB2yMmumYYWcpvA+QokIOvQ+6Dr4cAg69FQqnUTiCMEBQYfg89H2wfAMqpwEAAA8C5wEAACY4CQAAMAEJwEAACY4CQAAMMFJAACACU4CAABM2p6TIOiQUmeqEUGH9Ia8FmILKh\/mdfW01Mh6S915CDr05fjgoENGnYpGVuvWQ\/kuQjUJOqTKSdAhVaTTo1lpIbKN64MO9UagmBYIOvR2+vEhQYfUOlWN1JKqRhW0OIn2zKVviy\/4a3wL7JZP0CGnfTwu6NB\/4yTCb9TiUYb9eldHkwQdsrQoT+0vGHQoY58eJ1HQqMidTqIn6JBZxlqCz1wuhc8SNpQRyTmaHmkzmfoiYGt0zpbCm\/Sr9tcEHSLoUNDDTUGHMvapGrx05LpGTm50EgQd8qi5N0fQoZTrgg5lKz0JQYfU17ZHJTchypu47IQ9CtSMvq3cFw46JErawxiWzGpU5EYnkbxQOCNk43GTv6GM8MlXap2ZhlqOmwg65K3kbNChFhksCDqUxpOQJf1OoijbU4MOXaJRgRudhJUv9wQEHdIKE3ToqqBDRqCYNgg6lDoJWfIKJ1H1q0R5asc1z6V5JKR+c9AhYZ+mRpoln\/ztrcVJ+KPHVIWpUUY9\/M0rPSLMZu7\/XI1QlI9xRSYp1EnQoQ8MOmTWeZKtvomgQ8qfdhJ0yMpsn4Z+jfyE7RB06H3QdfDhEHToqVQ6icQRggOCDsHno+2D4RlUOQkAAHgWRSfxAoA2\/v7hRxLpa6ai9RacxLsmDcBjuH0VIJHyKW\/AOSfxxnkD8BhuXwJIpHzKG3DOSSz\/JJFILen2JYBEyqe8AeecBABcwu2rAIlkpaL1cidBIpFIJDPhJEgkEolkpn8BhIrlOb\/VVyoAAAAASUVORK5CYII=\" \/><\/p>\n<p>When doing the same for an action, you have to access the <em>UIComponent<\/em> from the <em>actionEvent<\/em>:<\/p>\n<pre><code>package ch.hasselba.xpages;\r\nimport java.util.List;\r\nimport javax.faces.event.ActionEvent;\r\nimport com.ibm.xsp.complex.Parameter;\r\nimport com.ibm.xsp.component.xp.XspEventHandler;\r\n\r\npublic class MyActionListener {\r\npublic void execute(ActionEvent event) {\r\n        XspEventHandler eventHandler = (XspEventHandler) event.getComponent();\r\n        List&lt;Parameter&gt; params = eventHandler.getParameters();\r\n        for (Parameter p : params) {\r\n            System.out.println(p.getName() + \" -&gt; \" + p.getValue());\r\n        }\r\n     }\r\n}<\/code><\/pre>\n<p>Here is an example XPage, the method<em> execute<\/em><em><\/em> is contained by the managed bean <em>myAction<\/em>:<\/p>\n<pre><code>&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\u00a0\u00a0 \u00a0&lt;xp:button\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0value=\"Label\"\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0id=\"buttonAction\"&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;xp:eventHandler\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0event=\"onclick\"\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0submit=\"true\"\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0immediate=\"true\"\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0refreshMode=\"complete\"\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0actionListener=\"#{myAction.execute}\"&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;xp:this.parameters&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;xp:parameter\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0name=\"param\"\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0value=\"#{javascript:java.lang.System.currentTimeMillis()}\"&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;\/xp:parameter&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;\/xp:this.parameters&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;\/xp:eventHandler&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0&lt;\/xp:button&gt;\r\n\u00a0\u00a0 \u00a0\r\n&lt;\/xp:view&gt;<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>To access the event parameters of an event within your actionListener, you have to access the source object of your actionEvent object: package ch.hasselba.xpages; import java.util.List; import javax.faces.event.AbortProcessingException; import javax.faces.event.ActionEvent; import com.ibm.xsp.complex.Parameter; import com.ibm.xsp.component.xp.XspEventHandler; public class MyActionListener implements javax.faces.event.ActionListener { &hellip; <a href=\"https:\/\/hasselba.ch\/blog\/?p=1368\">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,74],"tags":[33,47,7,31,86,3],"class_list":["post-1368","post","type-post","status-publish","format-standard","hentry","category-java","category-jsf","category-xpages","tag-8-5-3","tag-9-0","tag-domino","tag-java","tag-jsf","tag-xpages"],"_links":{"self":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1368","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=1368"}],"version-history":[{"count":2,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1368\/revisions"}],"predecessor-version":[{"id":1370,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1368\/revisions\/1370"}],"wp:attachment":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1368"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1368"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1368"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}