[ 
https://issues.apache.org/jira/browse/TOBAGO-535?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12541709
 ] 

Tobias Glensk commented on TOBAGO-535:
--------------------------------------

An other workaround ist to set the converter id via an f:converter tag

<tx:in label="${item.name}" value="${item.value}">
        <f:converter converterId="${item.converterId}" />
</tx:in>

> Possible error resolving EL expressions when using Facelets
> -----------------------------------------------------------
>
>                 Key: TOBAGO-535
>                 URL: https://issues.apache.org/jira/browse/TOBAGO-535
>             Project: MyFaces Tobago
>          Issue Type: Bug
>          Components: Facelets
>    Affects Versions: 1.0.12
>            Reporter: Tobias Glensk
>
> I wanted to set the converter to use for a tx:in from a managed bean, because 
> the concrete converter is only known on runtime. My managed bean returns the 
> Id for the converter correctly, but I get an error message.
> Example Facelet Snippet:
> <c:forEach items="${controller.currentBean.properties}" var="item">
>  
>   <!-- 1) below doesn't work, error message: Cannot convert 
> de.nordlbit.FDTStringConverter of type class java.lang.String to interface 
> javax.faces.convert.Converter -->
>   <tc:in label="${item.name}" value="${item.value}" 
> converter="${item.converterId}" />
>   <!-- 2) below doesn't work, error message: Cannot convert 
> de.nordlbit.FDTStringConverter of type class java.lang.String to interface 
> javax.faces.convert.Converter -->
>   <c:set var="converterId" value="${item.converterId}" />
>   <tc:in label="${item.name}" value="${item.value}" 
> converter="${converterId}" />
>                               
>   <!--3) below works, setting String statically -->
>   <tx:in label="${item.name}" value="${item.value}" 
> converter="de.nordlbit.FDTStringConverter" />
> </c:forEach> 
> ${item.converterId} returns a String with the value 
> "de.nordlbit.FDTStringConverter ". Using the examples 1 and 2 I get an error 
> message, setting the same String like in example 3 statically, it works. The 
> error message / stacktrace returns for the examples 1 and 2:
> 08.11.2007 10:16:42 com.sun.facelets.FaceletViewHandler handleRenderException
> SCHWERWIEGEND: Error Rendering View[/sandbox/wizard.xhtml]
> java.lang.IllegalArgumentException: Cannot convert 
> de.nordlbit.FDTStringConverter of type class java.lang.String to interface 
> javax.faces.convert.Converter
> at com.sun.el.lang.ELSupport.coerceToType(ELSupport.java:329)
> at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185)
> at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
> at com.sun.facelets.el.LegacyValueBinding.getValue(LegacyValueBinding.java:56)
> at javax.faces.component.UIOutput.getConverter(UIOutput.java:137)
> at 
> org.apache.myfaces.tobago.renderkit.RenderUtil.getFormattedValue(RenderUtil.java:128)
> at 
> org.apache.myfaces.tobago.renderkit.RendererBase.getCurrentValue(RendererBase.java:96)
> ...
> Example Snippet from the managed bean item class
>  /**
>      * @return the converterId
>      */
>     public String getConverterId() {
>         return this.converterId;
>     }
>  
> I tried to use # instead of $ but the same behaviour can be observed.
> The help for the converter attribute states:
> An expression that specifies the Converter for this component. If the value 
> binding expression is a String, the String is used as an ID to look up a 
> Converter. If the value binding expression is a Converter, uses that instance 
> as the converter. The value can either be a static value (ID case only) or an 
> EL expression

-- 
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