2012/6/11 burghard.britzke <b...@charmides.in-berlin.de>:
> with tomcat 7.0.27, primefaces 3.3, myfaces 2.1.17, weld 1.1.8
>
> for the jsf-source
> Line 56: <h:graphicImage
> Line 57:    value="/images/#{personenBean.aktuellePerson.geschlecht eq 'w' ? 
> 'fe':''}male.png">
> Line 58: </h:graphicImage>
>
> and the bean
> public class Person implements Serializable {
>        @Column(name = "\"geschlecht\"", nullable = false, length = 1)
>        private char geschlecht;
> ...
>
> an Exception is thrown
>
> java.lang.reflect.InvocationTargetException
> Caused by:<br/>javax.el.ELException - Cannot convert w of type class 
> java.lang.String to class java.lang.Long
> at org.apache.el.lang.ELSupport.coerceToNumber(ELSupport.java:304)
> personen.xhtml at line 57 and column 92    
> value="/images/#{personenBean.aktuellePerson.geschlecht eq 'w' ? 
> 'fe':''}male.png"
>
> At MyFaces Discussion <us...@myfaces.apache.org> they told me this would 
> probably be an issue with tomcat so I downgraded to Tomcat 7.0.25 and the 
> error disappeared.
> What are the next steps to get rid of this exception with Tomacat 7.0.27?
>

Yes, Tomcat behaviour changed and new behaviour follows the EL
specification more closely. It was because of this bug report:
https://issues.apache.org/bugzilla/show_bug.cgi?id=52666

See EL specification for more details.

According to EL 2.2 ch. 1.18.3 coercion from char to a number is performed as
"If A is Character, convert A to new Short((short)a.charValue()) ..."

so you have to s/'w'/119/.

There might be other workarounds, such as
a) Add another property to that bean that will return the value as String
b) Use a function such as fn:trim() from JSTL to force conversion of
that value into String.

Best regards,
Konstantin Kolinko

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to