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

Leonardo Uribe commented on MYFACES-2552:
-----------------------------------------

I think the only thing we can do is assume this case return null and deal with 
it, retrieving the real value and check its type. It is possible to change the 
ELResolver (Flash object implements Map but FlashELResolver resolve its values, 
instead MapELResolver).

In this example there is no way to check the type without retrieve the value, 
and note #{cc.attrs} is a Map<String,Object>. I remember variants of the same 
issue long time ago on myfaces and in that time the solution was the same.

> 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