{"id":118,"date":"2016-10-14T12:01:29","date_gmt":"2016-10-14T10:01:29","guid":{"rendered":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/?p=118"},"modified":"2022-12-04T12:01:56","modified_gmt":"2022-12-04T11:01:56","slug":"tipps-zu-jsf-composite-componentes","status":"publish","type":"post","link":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/?p=118","title":{"rendered":"Tipps zu JSF Composite Componentes"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Umgebung<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>EE7<\/li>\n\n\n\n<li>JSF 2.2<\/li>\n<\/ul>\n\n\n\n<p>Mit diesem Post m\u00f6chte ich einige Hinweise zu den Composite Componentes von JSF geben, die immer wieder gefragt werden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zugriff auf Attribute des Interfaces<\/h2>\n\n\n\n<p>Auf Attribute des Interfaces wird \u00fcber #{cc.attrs.&lt;Name aus dem Interface&gt;} zugegriffen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Rendered und id verhalten sich seltsam<\/h2>\n\n\n\n<p>Composite Componentes leiten sich aus UINamingContainer und UIComponentBase ab. Daher d\u00fcrfen und sollen einige Attribute wie rendered oder id nicht \u00fcberschrieben werden. Diese stehen bereits durch die Ableitung zur Verf\u00fcgung und k\u00f6nnen direkt \u00fcbergeben werden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Parameter an action oder actionListener binden<\/h2>\n\n\n\n<p>Sollen Methoden f\u00fcr action oder actionListener \u00fcbergeben werden, m\u00fcssen im Interface die Signaturen angegeben werden z.B.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;cc:attribute name=\"action\" required=\"true\" method-signature=\"java.lang.String action()\" \/&gt;\n&lt;cc:attribute name=\"actionListener\" required=\"true\" method-signature=\"void actionListener(javax.faces.event.ActionEvent)\" \/&gt;\n<\/pre>\n\n\n\n<p>Werden diese Attribute in der Komponente an action oder actionListener von entsprechenden Komponenten (z.B. h:actionButton) gebunden, d\u00fcrfen sie nicht leer sein. Es sollte also required=&#8220;true&#8220; verwendet werden. Alternativ m\u00fcssen in der Komponente verschiedene Varianten umgesetzt und \u00fcber z.B. rendered=\u201cnot empty cc.attrs.action\u201c ein- und ausgeblendet werden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Einbinden von Kindernkomponenten<\/h2>\n\n\n\n<p>Kindelemente aus den HTML-Seiten werden \u00fcber &lt;cc:insertChildren \/&gt; eingef\u00fcgt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Umgebung Mit diesem Post m\u00f6chte ich einige Hinweise zu den Composite Componentes von JSF geben, die immer wieder gefragt werden. Zugriff auf Attribute des Interfaces Auf Attribute des Interfaces wird \u00fcber #{cc.attrs.&lt;Name aus dem Interface&gt;} zugegriffen. Rendered und id verhalten sich seltsam Composite Componentes leiten sich aus UINamingContainer und UIComponentBase ab. Daher d\u00fcrfen und sollen [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-118","post","type-post","status-publish","format-standard","hentry","category-jee"],"_links":{"self":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/118","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=118"}],"version-history":[{"count":1,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/118\/revisions"}],"predecessor-version":[{"id":119,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/118\/revisions\/119"}],"wp:attachment":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=118"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=118"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=118"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}