Usar dois bundle em uma unica pagina [RESOLVIDO]

1 resposta
L

Olá meus amigos, preciso de uma ajuda… Para facilitar a manutencao de meu codigo criei alguns pacotes que representam categorias de mensagens. Entao ficou assim:

  • br.com.vconline.os.messages.campos (Aonde coloquei um arquivo chamado messages.properties e dentro deste arquivo os keys dos campos dos forms)
  • br.com.vconline.os.messages.erros (Aonde coloquei um arquivo chamado messages.properties e dentro deste arquivo os keys das mensagens de erro)
  • br.com.vconline.os.messages.gerais (Aonde coloquei um arquivo chamado messages.properties e dentro deste arquivo os keys de textos gerais)

O problema está na hora de eu usar dois ou mais destes pacotes, como no exemplo abaixo:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@page contentType="text/html" pageEncoding="iso-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
   
<fmt:setBundle basename="br.com.vconline.os.messages.campo.messages" />
<fmt:setBundle basename="br.com.vconline.os.messages.geral.messages" />

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title><fmt:message key="account.login.title"/></title>
</head>
<body>
    <h1><fmt:message key="account.login.titulo"/></h1>
    <c:if test="${not empty param['usuario.login']}">
        <fmt:message key="account.msg.erro"/>
    </c:if>
    
    <form action="account.efetuaLogin.logic" method="post">
        <fmt:message key="account.login.usuario"/><input type="text" name="usuario.email"><br>
        <fmt:message key="account.login.senha"/><input type="password" name="usuario.senha">
        <input type="submit">
    </form>
</body>
</html>

os fmt:messages que estao dentro da tag form pertence ao pacote campos mas as outras podem estar ou dentro do geral ou dentro do error.

Qual a melhor forma de resolver isto ? Já procurei muito e só encontro com JSF…

PS.: Meti isto no web.xml, nem sei se precisava, mas qdo eu usava dentro de um arquivo apenas eu usava…

<context-param>
        <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
        <param-value>br.com.vconline.os.messages</param-value>
    </context-param>

1 Resposta

L

Olá, consegui resolver fazendo assim:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@page contentType="text/html" pageEncoding="iso-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
   
<fmt:setBundle basename="br.com.vconline.os.messages.campo.messages" var="msgCampo" />
<fmt:setBundle basename="br.com.vconline.os.messages.geral.messages" var="msgGeral" />

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title><fmt:message key="account.login.title" bundle="${msgGeral}" /></title>
</head>
<body>
    <h1><fmt:message key="account.login.titulo" bundle="${msgGeral}"/></h1>
    <c:if test="${not empty param['usuario.login']}">
        <fmt:message key="account.msg.erro" bundle="${msgGeral}"/>
    </c:if>
    
    <form action="account.efetuaLogin.logic" method="post">
        <fmt:message key="account.login.usuario" bundle="${msgCampo}"/><input type="text" name="usuario.email"><br>
        <fmt:message key="account.login.senha" bundle="${msgCampo}"/><input type="password" name="usuario.senha">
        <input type="submit">
    </form>
</body>
</html>
Criado 17 de junho de 2008
Ultima resposta 18 de jun. de 2008
Respostas 1
Participantes 1