You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Tobias Glensk (JIRA)" <de...@myfaces.apache.org> on 2007/11/08 11:28:50 UTC
[jira] Commented: (TOBAGO-535) Possible error resolving EL
expressions when using Facelets
[ https://issues.apache.org/jira/browse/TOBAGO-535?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12541015 ]
Tobias Glensk commented on TOBAGO-535:
--------------------------------------
A Workaround is to use an instance of javax.faces.convert.Converter instead of an String to use for the converter.
Example Facelet Snippet:
<c:forEach items="${controller.currentBean.properties}" var="item">
<!-- below works, use of a javax.faces.Converter instance -->
<tx:in label="${item.name}" value="${item.value}" converter="${item.converter}" />
</c:forEach>
Example Snippet from the managed bean item class
/**
* @return the converter
*/
public Converter getConverter() {
return this.converter;
}
> 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.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.