[ 
https://issues.apache.org/jira/browse/MYFACES-2552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12833040#action_12833040
 ] 

Jakob Korherr commented on MYFACES-2552:
----------------------------------------

One solution for this would be to return a special type != Map when resolving 
#{cc.attrs} and providing a special ELResolver for this type. Then we could use 
the original ValueExpressions of the attributes from the composite component to 
determine the type. Of course this would totally break the spec!!!

What are your opinions about that? Is this too unimportant to make such great 
changes or should we consult the EG and maybe change this behavior? Maybe in 
the next major release (2.1)?

> TagValueExpression.getType() returns null if the property in the managed bean 
> is null and the expression points to a facelets composite component attribute
> -----------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: MYFACES-2552
>                 URL: https://issues.apache.org/jira/browse/MYFACES-2552
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: JSR-314
>    Affects Versions: 2.0.0-beta-2
>            Reporter: Jakob Korherr
>            Assignee: Jakob Korherr
>
> if you have a facelets composite component with an attribute "test" that 
> points to a property in a managed bean (e.g. #{myBean.property}) which is 
> currently null and you refer to that attribute in the implementation via 
> #{cc.attrs.test} you can get the current value (null) or set a new value but 
> you cannot get the type of the property (e.g. String[]). However if the 
> property in the managed bean is non-null you can get the type.
> For example:
> <cc:interface name="mycomponent">
>     <cc:attribute name="test" required="true"/>
> </cc:interface>
> <cc:implementation>
>     <h:selectManyListbox value="#{cc.attrs.test}">
>         <f:selectItems value="#{some select items}"/>
>     </h:selectManyListbox>
> </cc:implementation>
> --> calling #{cc.attrs.test}.getType() will fail if #{cc.attrs.test} resolves 
> to null, but will work if #{cc.attrs.test} resolves to some valid value.
> This currently results in a NullPointerException in 
> _SharedRendererUtils.getConvertedUISelectManyValue().

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to