Dúvida besta, formatação de número em JSP

3 respostas
A

Por favor

Não estou conseguindo formatar valores numéricos (primitivos ou wrappers) em páginas JSP usando as taglib de fmt.

Tentei com fmt:formatNumber e dá NumberFormatException

Sugestões?

<fmt:formatNumber value="${ cliente.saldo}" type="currency" />

20/06/2006 - 19:48:43 ERROR : (StandardWrapperValve.java:invoke:253) Servlet.service() for servlet action threw exception java.lang.NumberFormatException: For input string: "${ cliente.saldo}" at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source) at java.lang.Double.valueOf(Unknown Source) at org.apache.taglibs.standard.tag.common.fmt.FormatNumberSupport.doEndTag(Unknown Source) at org.apache.jsp.cliente_005fmenu_jsp._jspx_meth_fmt_formatNumber_0(org.apache.jsp.cliente_005fmenu_jsp:366) at org.apache.jsp.cliente_005fmenu_jsp._jspx_meth_logic_present_0(org.apache.jsp.cliente_005fmenu_jsp:222) at org.apache.jsp.cliente_005fmenu_jsp._jspService(org.apache.jsp.cliente_005fmenu_jsp:108) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063) at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263) at org.apache.struts.action.RequestProcessor.internalModuleRelativeForward(RequestProcessor.java:1001) at org.apache.struts.tiles.TilesRequestProcessor.internalModuleRelativeForward(TilesRequestProcessor.java:345) at org.apache.struts.action.RequestProcessor.processForward(RequestProcessor.java:560) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:209) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063) at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263) at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386) at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:831) at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:639) at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1203) at java.lang.Thread.run(Unknown Source)

3 Respostas

B

Imprima o valor que esta vindo sem formatação, simplesmente:

${cliente.saldo}

e ao lado imprima o valor com a taglib, assim poderá ver se o valor de saldo é realmente um numérico.

Naum sei com a taglib, mas se tentar formatar um valor no java que esteja com , no lugar de . da esse erro.

t+

A

Consigo imprimir o valor sem problemas usando <c:out /> por exemplo.

A

Bom, já que não apareceu uma solução eu fiz de um jeito aqui. Não ficou elegante.

Mas criei uma outra propriedade no POJO e um método que retorna uma String com o número formatado usando o NumberFormat.

Não gostei dessa solução porque fui obrigado a criar um atributo desnecessário, e pq tenho que fazer isso para cada propriedade númerica que quero formatar de algum jeito.

Alguma outro sugestão?

Criado 20 de junho de 2006
Ultima resposta 22 de jun. de 2006
Respostas 3
Participantes 2