The RichFaces CDK extension elements have namespache http://richfaces.org/cdk/extensions and its default prefix is 'cdk:'. These extensions defined in the appropriate XML schema ( not included with ALPHA1 release ). In this article, all tags are given as example.
Top level extension:
<cdk:function> <description>Long, long description</description> <display-name>test string</display-name> <cdk:function-class>org.richfaces.cdk.test.functions.TestFunctions</cdk:function-class> <cdk:function-name>testString</cdk:function-name> <cdk:function-signature>java.lang.String testString(java.util.List<java.lang.String>,char)</cdk:function-signature> </cdk:function> <cdk:faces-event> </cdk:faces-event> <cdk:prefix>org.richfaces</cdk:prefix> <cdk:taglib> </cdk:taglib>
Application extension:
Component extension:
<faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:cdk="http://richfaces.org/cdk/extensions" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd" version="2.0"> .............................. <component> .... standard component elements .... <component-extension> <cdk:base-class>foo.Bar</cdk:base-class> <cdk:generate>true</cdk:generate> <cdk:component-family>foo.Family</cdk:component-family> <cdk:renderer-type>org.richfaces.cdk.TestPanelRenderer</cdk:renderer-type> <cdk:tag> <cdk:tag-name>testPanel</cdk:tag-name> <cdk:handler-class>...</cdk:handler-class> <cdk:base-class>...</cdk:base-class> <cdk:generate>true</cdk:generate> <cdk:tag-type>Facelets</cdk:tag-type><!-- Jsp --> </cdk:tag> </component-extension> </component> </faces-config>
<cdk:generate> tells CDK to generate concrete component class ( base UI... or renderer-specific ).
<cdk:base-class> defines superclass of the generated component class ( which name is taken form standard <component-class> tag )
<cdk:component-family> defines component family used in the generated class.
Attribute extensions:
<component> <property> <description><![CDATA[test2 property]]></description> <display-name>test2 event property</display-name> <icon>ontest2.png</icon> <property-name>ontest2</property-name> <property-class>int</property-class> <default-value>3</default-value> <suggested-value>15</suggested-value> <property-extension> <cdk:literal>true</cdk:literal> <cdk:generate>true</cdk:generate> <cdk:hidden>true</cdk:hidden> <cdk:required>true</cdk:required> <cdk:pass-through>true</cdk:pass-through> <cdk:event-name>ontest2</cdk:event-name> <cdk:event-name default="true">action</cdk:event-name> <cdk:signature> <cdk:return-type>void</cdk:return-type> <cdk:param>boolean</cdk:param> <cdk:param>java.lang.String</cdk:param> </cdk:signature> <cdk:aliasFor>foo</cdk:aliasFor> </property-extension> </property> </component>
<aliasFor> defines this property as alias for another. CDK will generate getters/setters for that property which delegate calls to the original attribute methods.
<literal> if true, no EL-expressions are allowed for this attribute.
<event-name> defines behavior event name for this attribute.
<hidden> attributes are not presented in the tag.
<signature> defines Java method signature for attributes that holds MethodExpression objects.
<generate> forces CDK to generate attribute getter/setter methods.
Facet extensions:
<facet> <description>Header facet</description> <facet-name>header</facet-name> <facet-extension> <cdk:generate>true</cdk:generate> </facet-extension> </facet>
<generate> forces CDK to generate getter/setter methods for facet. In the example above these methods will be generated:
public UIComponent getHeader(){ return getFacets().get("header"); } public void setHeader(UIComponent header){ getFacets().put("header",header); }
RenderKit extension:
Renderer extension:
<renderer> .......................... <renderer-extension> <cdk:renders-children>true</cdk:renders-children> </renderer-extension> </renderer>
Converter:
Comments