Taglib fmt - formatNumber dentro do javascript!

1 resposta
kyuri
Estou tentando formatar um valor dentro do javascript, usando a taglib fmt. Segue o código JS: (faço uma requisição ajax para preencher tabelas dinamicamente, o valor é do tipo double!)
function listAgendamentos(retorno){
			var ajaxReturn = eval('(' + retorno.responseText + ')');
			var id = "data"+ajaxReturn.data;
			var html = "";
			if(ajaxReturn.agendamentos.length){
				for(var i=0; i < ajaxReturn.agendamentos.length; i++) {
					html += "<tr>";
					html += "<td>" + ajaxReturn.agendamentos[i].usuarioNome + "</td>";
					html += "<td>" + ajaxReturn.agendamentos[i].categoriaDescricao + "</td>";
					html += "<td>" + ajaxReturn.agendamentos[i].subcategoriaDescricao + "</td>";
					html += "<td>" + ajaxReturn.agendamentos[i].descricao + "</td>";
					
					html += "<td><fmt:formatNumber value=" + ajaxReturn.agendamentos[i].valor + " type='currency'/></td>";
					
					html += "<td>" + ajaxReturn.agendamentos[i].dataFormatada + "</td>";
					html += "</tr>";
				}
				$(id).innerHTML = html;
			}
		}

E isso me retorna o seguinte erro:

exception

javax.servlet.ServletException: org.apache.jasper.JasperException: javax.servlet.jsp.JspException: In &lt;formatNumber&gt;, value attribute can not be parsed into java.lang.Number: " + ajaxReturn.agendamentos[i].valor + "
	org.vraptor.VRaptorServlet.service(VRaptorServlet.java:75)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
Coloquei a tag
<fmt:setLocale value="pt_BR"/>
em vários lugares mas não surtiu efeito algum.

E se eu coloco a tag diretamente no jsp funciona perfeitamente! :?

1 Resposta

AndreAlves

Oi Kyuri.

Do jeito que você está fazendo, a tag fmt:formatNumber será processada pelo browser ao invés do servidor de aplicação, e desta forma não vai acontecer nada pois o browser vai ignorá-la. Para fazer com que o resultado de uma tag JSTL seja utilizado em um JavaScript, você precisa colocá-la entre aspas duplas.

Pelo o que eu entendi do seu código, o problema é que no seu caso você precisa que a formatação seja executada no lado cliente, pois você está utilizando um valor recuperado no JavaScript. Procure no Google por funções JavaScript para formatar números. Tem vários exemplos por aí.

Criado 21 de abril de 2009
Ultima resposta 21 de abr. de 2009
Respostas 1
Participantes 2