[
https://issues.jboss.org/browse/RF-12296?page=com.atlassian.jira.plugin.s...
]
Lukáš Fryč commented on RF-12296:
---------------------------------
Paul, I believe this issue is caused by no type information about {{MyEnum}} expression,
rather than {{c:forEach}}.
CDK holds type information about each expression specifically, say {{item}}. But
{{MyEnum}} expression is considered to be {{Object}} by CDK, thus {{item}} is {{Object}}
(this is fallback solution of CDK when it can't detect type of expression given by
{{items}} attribute).
I think this could be solve by CDK pre-processing of static imports, at this case,
{{MyEnum}} expression should be determined to be {{Enum}}.
----
I believe we should come with comprehensive support for using statically imported classes
and methods:
e.g. {{import static java.text.MessageFormat.format}} will allow me to use following
expression: {{format(...)}}
or {{import static MyRenderKitUtils}} will allow me to use {{MyRenderKitUtils.list}} with
correct typing.
Improve CDK c:forEach typing
----------------------------
Key: RF-12296
URL:
https://issues.jboss.org/browse/RF-12296
Project: RichFaces
Issue Type: Feature Request
Security Level: Public(Everyone can see)
Components: cdk
Affects Versions: 4.2.2.Final
Environment: All
Reporter: Paul Dijou
Labels: cdk, richfaces, type
Fix For: 4.3.0.Milestone2
As we can see on [this
comment|https://issues.jboss.org/browse/RF-10037?focusedCommentId=1269671...],
you currently need to assign a list/array to a var before using it inside a
{{<c:forEach>}} or the CDK doesn't know its correct type.
As suggested by Lukas, I agree to add a {{cdk:itemType}} (or {{cdk:type}} like in the
{{<cdk:object>}} tag) to specify manually the type of the object inside the
iteration. If this attribute is present in the {{<c:forEach>}}, then the CDK use it
to cast the object, otherwise it does the same as currently, no regression.
In addition, for Enum, I would also try to use the initial import :
{code:xml}
<cdk:import package="org.richfaces.component" names="MyEnum"
/>
{code}
In order to know the type of each Enum and then be able to correctly cast the following
code :
{code:xml}
<cc:implementation>
<c:forEach items="#{MyEnum.values()}" var="item">
#{item}
</c:forEach>
</cc:implementation>
{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