in a way similar to here I am using an abstract class to type the item set list of ui:repeat. Concrete subclasses override the getType() method, that is used to conditionally render the respective subtype with its particular properties:
<!-- AbstractAction Rule#getActions() -->
<ui:repeat value="#{rule.actions}" var="action">
<!-- render when "action" instance of NotificationAction -->
<h:panelGroup rendered="#{action.type == 'notification'}">
... UI for NotificationAction properties
<h:panelGroup rendered="#{action.type == 'callback'}">
...
When run on Glassfish 3 there is an error about properties not being defined on list members of other subclasses (PropertyNotFoundException), which occurs in a branch that is actually switched off by the rendered property. c:forEach/c:choose do not seem appropriate. Any ideas how to make the rendering really conditional and bypass the property checking are highly appreciated!
Thank you. Jaro