I'm trying to use the JSTL <fmt:formatNumber> tag with request-time expressions (NOT the JSTL expression language) and not having much luck. Here's my JSP: <%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="f" %> <% byte b = 92; short s = 1025; int i = 172343; long l = 4782472384782L; float f = 3.14159f; double d = 2.718281828e55; %> <html> <head><title>JSTL Test</title></head> <body> <p>b <f:formatNumber pattern="#,##0" value="<%= b %>"/></p> <p>s <f:formatNumber pattern="#,##0" value="<%= s %>"/></p> <p>i <f:formatNumber pattern="#,##0" value="<%= i %>"/></p> <p>l <f:formatNumber pattern="#,##0" value="<%= l %>"/></p> <p>f <f:formatNumber pattern="#,##0.00e00" value="<%= f %>"/></p> <p>d <f:formatNumber pattern="#,##0.00e00" value="<%= d %>"/></p> </body> </html> and here are the error messages I get from Jasper. (I've removed most of the file paths for readability.) [javac] .../jstl-test/bug_jsp.java:72: cannot resolve symbol [javac] symbol : method setValue (byte) [javac] location: class org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag [javac] _jspx_th_f_formatNumber_0.setValue( b ); [javac] .../jstl-test/bug_jsp.java:84: cannot resolve symbol [javac] symbol : method setValue (short) [javac] location: class org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag [javac] _jspx_th_f_formatNumber_1.setValue( s ); [javac] .../jstl-test/bug_jsp.java:96: cannot resolve symbol [javac] symbol : method setValue (int) [javac] location: class org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag [javac] _jspx_th_f_formatNumber_2.setValue( i ); [javac] .../jstl-test/bug_jsp.java:108: cannot resolve symbol [javac] symbol : method setValue (long) [javac] location: class org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag [javac] _jspx_th_f_formatNumber_3.setValue( l ); [javac] .../jstl-test/bug_jsp.java:120: cannot resolve symbol [javac] symbol : method setValue (float) [javac] location: class org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag [javac] _jspx_th_f_formatNumber_4.setValue( f ); [javac] .../jstl-test/bug_jsp.java:132: cannot resolve symbol [javac] symbol : method setValue (double) [javac] location: class org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag [javac] _jspx_th_f_formatNumber_5.setValue( d );
As per the spec, section 9.7, the value attribute of <fmt:formatNumber> accepts values of type String or Number. It does not accept primitive types such as short, int, etc... [Automatic type conversions are supported with the EL version of the library.]