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!