[
https://issues.jboss.org/browse/RF-12226?page=com.atlassian.jira.plugin.s...
]
Lukáš Fryč commented on RF-12226:
---------------------------------
Highlights:
* automatic propagation of implicit objects ({{facesContext, responseWriter, component}})
* type-safe definition of attributes
* rendering using {{cdk:renderFragment}} with attribute names equal to attribute names in
fragment interface
{code:xml|title=testComponent.template.xml}
<cdk:root
xmlns="http://jboss.org/schema/richfaces/cdk/xhtml-el"
xmlns:cdk="http://jboss.org/schema/richfaces/cdk/core"
xmlns:c="http://jboss.org/schema/richfaces/cdk/jstl/core"
xmlns:cc="http://jboss.org/schema/richfaces/cdk/jsf/composite">
<cc:interface>
<cdk:class>org.richfaces.renderkit.TestComponentRenderer</cdk:class>
<cdk:superclass>org.richfaces.renderkit.TestComponentRendererBase</cdk:superclass>
<cdk:component-family>org.richfaces.TestComponentFamily</cdk:component-family>
<cdk:renderer-type>org.richfaces.TestComponentRenderer</cdk:renderer-type>
<cdk:component-base-class>org.richfaces.component.TestComponent</cdk:component-base-class>
</cc:interface>
<cc:implementation>
<cdk:renderFragment name="methodName" attribute2="#{0}"
attribute1="#{this.list}" />
<cdk:body />
<cdk:renderFragment name="anotherMethod" condition="true"
/>
</cc:implementation>
<cdk:fragment name="methodName">
<cc:interface>
<cc:attribute name="attribute1" type="List < String
>" />
<cc:attribute name="attribute2" type="int" />
</cc:interface>
<cc:implementation>
<cdk:renderFragment name="methodName"
attribute1="#{this.list}" attribute2="#{cc.attrs.attribute1.size()}"
/>
</cc:implementation>
</cdk:fragment>
<cdk:fragment name="anotherMethod">
<cc:interface>
<cc:attribute name="condition" type="boolean" />
</cc:interface>
<cc:implementation>
<c:if test="#{cc.attrs.condition}">
Yes!
</c:if>
</cc:implementation>
</cdk:fragment>
</cdk:root>
{code}
generates
{code:java|title=org.richfaces.renderkit.TestComponentRenderer}
public void methodName(ResponseWriter responseWriter, FacesContext facesContext,
UIComponent uiComponent,
List<String> attribute1, int attribute2) throws IOException {
TestComponent component = (TestComponent) uiComponent;
String clientId = component.getClientId(facesContext);
methodName(responseWriter, facesContext, component, this.getList(),
attribute1.size());
}
public void anotherMethod(ResponseWriter responseWriter, FacesContext facesContext,
UIComponent uiComponent,
boolean condition) throws IOException {
TestComponent component = (TestComponent) uiComponent;
String clientId = component.getClientId(facesContext);
if (condition) {
responseWriter.writeText("Yes!", null);
}
}
@Override
public void doEncodeBegin(ResponseWriter responseWriter, FacesContext facesContext,
UIComponent uiComponent)
throws IOException {
TestComponent component = (TestComponent) uiComponent;
String clientId = component.getClientId(facesContext);
methodName(responseWriter, facesContext, component, this.getList(), 0);
}
private static Boolean convertToBoolean(Object object) {
if (object instanceof Boolean) {
return (Boolean) object;
}
return Boolean.valueOf(object.toString());
}
@Override
public void doEncodeEnd(ResponseWriter responseWriter, FacesContext facesContext,
UIComponent uiComponent)
throws IOException {
TestComponent component = (TestComponent) uiComponent;
String clientId = component.getClientId(facesContext);
anotherMethod(responseWriter, facesContext, component,
convertToBoolean("true"));
}
{code}
Support for CDK fragments to allow recursion and abstraction of code
--------------------------------------------------------------------
Key: RF-12226
URL:
https://issues.jboss.org/browse/RF-12226
Project: RichFaces
Issue Type: Feature Request
Security Level: Public(Everyone can see)
Components: cdk
Affects Versions: 4.2.1.Final
Reporter: Lukáš Fryč
Assignee: Lukáš Fryč
Labels: xp
Fix For: 4.3.0.Milestone1
https://gist.github.com/2576862
{code:xml}
<cdk:root>
<cc:interface />
<cc:implementation>
<cdk:render name="my" value="#{attr_value}" />
</cc:implementation>
<cdk:fragment name="my">
<cc:interface>
<cc:attribute name="value" type="java.lang.String" />
</cc:interface>
<cc:implementation>
<cdk:render name="my" value="#{cc.value.recursiveParameter}"
/>
</cc:implementation>
</cdk:fragment>
</cdk:root>
{code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira