使用jstl fmt:message标记的国际化/本地化问题

时间:2013-07-15 10:02:35

标签: jsp localization internationalization jstl

我有一个需要用英语和阿拉伯语显示的Web应用程序。我为英语和阿拉伯语添加了2个独立的资源包。当它使用jstl格式<fmt:message key="navigation.welcome"/>的阿拉伯语时,它工作正常显示阿拉伯语单词。但是,当我使用<fmt:message var="itemLabel" key="navigation.welcome"/>时,它不起作用,它显示键/值对的unicode值。存储在Unicode中的键/值对如下。

navigation.welcome = &#1571;&#1607;&#1604;&#1575; &#1608;&#1587;&#1607;&#1604;&#1575;!

jsp页面如下。

<dsp:page> 
  <div id="atg_store_personalNav">
    <ul id="atg_store_personalNavItems">

     <%-- WISH LISTS LINK --%>
     <li class ="${activeTab=='WISHLIST' ? ' active' : ' '}">
     <fmt:message var="itemLabel" key="navigation.welcome"/>
     <fmt:message var="itemTitle" key="navigation_personalNavigation.linkTitle">
     <fmt:param value="${itemLabel}"/>
     </fmt:message>

    <dsp:droplet name="ProfileSecurityStatus">

        <%-- Logged in User --%>
        <dsp:oparam name="loggedIn">
        <dsp:a id="myWishList" page="/myaccount/myWishList.jsp" title="${itemTitle}" iclass="atg_store_navWishList">
          <c:out value="${itemLabel}"/>
        </dsp:a>
        </dsp:oparam>

          <%-- Anonymous user or logged in from cookie --%>
          <dsp:oparam name="default">
          <dsp:a id="myWishList" page="/global/util/loginRedirect.jsp?error=wishlistNotLoggedIn"
               title="${itemTitle}" iclass="atg_store_navWishList">
          <dsp:property bean="SessionBean.values.loginSuccessURL" value="myWishList.jsp"/>
          <c:out value="${itemLabel}"/>
        </dsp:a>
      </dsp:oparam>

     </dsp:droplet>

   </li>
   </ul>
  </div>
</dsp:page>

var选项需要与fmt:message一起使用以供以后使用。有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:0)

用于显示输出。默认情况下,c:out转义XML特殊字符,例如&amp ;.通过添加escapeXml =“false”,它就解决了。

答案 1 :(得分:0)

在你的控制器或动作类中,只需写下逻辑:

response.setCharacterEncoding("UTF-8");

然后它应该工作。