Fiz um teste aqui e sempre que a mensagem é colocada na tag ela não acha o arquivo de internacionalização Se eu repetir a tag (fmt:message) for a da tag tudo ocorre bem, mas dentro dela, mesmo deletando o messages_pt, o texto não é encontrado
Fiz um teste aqui e sempre que a mensagem é colocada na tag ela não acha o arquivo de internacionalização Se eu repetir a tag (fmt:message) for a da tag tudo ocorre bem, mas dentro dela, mesmo deletando o messages_pt, o texto não é encontrado
Oi Paulo, quando você fala de dentro e fora da tag, é uma tag html? Pode postar o código aqui? Peço isso porque realmente não devia influenciar em nada.
Ta na mão
<%@page import="br.com.caelum.produtos.modelo.Produto"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<head>
<script type="text/javascript" src="<c:url value="/js/jquery.js"/>"></script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<script type="text/javascript">
function removeProduto(id){
$("#mensagem").load('<c:url value="/produto/remove"/>' + '?produto.id=' + id);
$("#produto" + id).remove();
}
</script>
<h1>Produtos</h1>
<h3><fmt:message key="mensagem.bemvindo" /></h3>
<div id="mensagem"></div>
<table width="100%">
<tr>
<td>Contatdor</td>
<td width="20%">Nome</td>
<td>Preco</td>
<td>Descricao</td>
<td>Data de Inicio da Venda</td>
<td>Usado?</td>
<td width="20%">Remover?</td>
</tr>
<c:forEach var="p" items="${produtoList}" varStatus="st">
<tr id="produto${p.id}">
<td>${st.count}</td>
<td>${p.nome.toUpperCase()}</td>
<td><fmt:setLocale value="pt_br"/><fmt:formatNumber value="${p.preco}" type="currency"/></td>
<td>${p.descricao}</td>
<td><fmt:formatDate pattern="EEEE,dd'de'MM'de'yyyy" value="${p.dataInicioVenda.time}"/></td>
<c:choose>
<c:when test="${p.usado}">
<td>Sim</td>
</c:when>
<c:otherwise>
<td>Não</td>
</c:otherwise>
</c:choose>
<td><a href="#" onclick="return removeProduto(${p.id})">Remover</a></td>
</tr>
</c:forEach>
</table>
<!-- inline de c:url -->
<a href="<c:url value='/produto/formulario'></c:url>">
<fmt:message key="mensagem.novoProduto"/>
</a>
<c:import url="../_common/rodape.jsp" />
</body>
</html>
Ali no 'inline c:url' o fmt dentro da tag , a mensagem não muda para o inglês. Já limpei cache, já acendi vela... e nada
Opa Paulo, olhando o código eu realmente não consegui identificar o que pode ta errado, dado que nos outros lugares funciona. Vc chegou a descobrir?
Infelizmente ainda não descobri o porquê. Basicamente o meu Talvez alguma inconsistência? Testei em dois computadores diferentes (o mesmo código, importado do meu git) e o resultado foi o mesmo.
Acho que é algum outro detalhe, o htm em si não tem nenhuma influencia sobre a jstl.. um é interpretado do lado cliente e outro do lado do servidor. A tag não é interpretada ou a mensagem que aparece ta errada? Tem o projeto em algum lugar pra que eu possa dar uma olhada?
Normal, Descobri o seu problema, voce força o locale para pt_br. Dai em diante tudo é pt_br.
Voce esta setando:
<fmt:setLocale value="pt_br"/><fmt:formatNumber value="${p.preco}" type="currency"/></td>
Remova:
<fmt:setLocale value="pt_br"/>
Um "workaround" (me parece gambiarra), mas na minha opinião forçar o locale também é, risos. Guarda o locale antes de trocar em uma variável. Força a mudança para ter o resultado do currency Depois coloca de volta o locale.
<td>
<c:set var="padrao" value="${pageContext.request.locale.language}"></c:set>
<fmt:setLocale value="pt_br"/>
<fmt:formatNumber value="${p.preco}" type="currency"/>
<fmt:setLocale value="${padrao}"/>
</td>
Outra opção é usar um pattern:
R$ <fmt:formatNumber type = "number"
pattern = "###,###,###,##0.00" value = "${p.preco}" />
Fala Mario; Dito e feito. O que estava causando o problema era, realmente, o locale. Eu não sabia que ele ia causar tamanha dor de cabeça, e pensei que respeitaria os limites da tag Agradeço à todos pela ajuda!