java - JSTL fmt :message and resource bundle

标签 java struts2 jstl

我想根据语言环境从资源包中设置我的表的“dir”属性。

这是片段:

        <fmt:setBundle basename="class.path.to.resource.bundle"/>
        <table align=center class="" dir=<fmt:message key="registration.direction"/>>

当页面呈现时我得到这个:

   <table align=center dir=???registration.direction???>

我有两个英语和阿拉伯语资源包。

registration.direction = ltr -> 英语

registration.direction = rtl -> 阿拉伯语

请告诉我我做错了什么?根据语言环境,目录应该有“ltr”或“rtl”。

谢谢

BR SC

最佳答案

两件事

1) 我会添加一个变量来存储消息结果

<fmt:message key="registration.direction" var="direction" />

然后

2) 我将对您的代码执行以下操作

  <fmt:setBundle basename="class.path.to.resource.bundle"/>
  <fmt:message key="registration.direction" var="direction" />
  <table align=center class="" dir="${direction}">

现在就您的资源包而言,通常您的资源包应该具有以下结构

/foo/bar/MyResourceBundle.properties
/foo/bar/MyResourceBundle_en.properties
/foo/bar/MyResourceBundle_en_US.properties
/foo/bar/MyResourceBundle_<lang>[_COUNTRY[_VAR]].properties

如果您的包不是以这种方式构建的,那可能是您的一些问题。

确保所有预期可用的键都在 MyResourceBundle 中定义并具有合理的默认值。

我正在修改这个答案,因为我不确定我的评论是否在隐藏功能中丢失了。

鉴于您使用的是 Struts 2,我的印象是您使用的是 i18n 拦截器。拦截器会将当前语言环境存储在名为 WW_TRANS_I18N_LOCALE 的 session 变量中。因此,您应该能够访问它并使用以下命令为 JSTL 标记设置语言环境:

<fmt:setLocale scope="session" value="${sessionScope.WW_TRANS_I18N_LOCALE}" />

希望对你有用。

关于java - JSTL fmt :message and resource bundle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4667724/

相关文章:

java - 如何组合非常相似的方法

java - 如何在旧的 Android API 上强制执行操作栏设置图标

java - 如何返回具有两位小数的 double ?

java - 将 Java 应用程序的新异常通知管理员的最佳方式是什么?

java - JSP 中不支持的区域设置的日期格式

java - Gridlayout 内的 JPanel 导致透明度问题

java - Struts tag-tiles 无法在 web.xml 或 jar 文件中解析

struts2 - 如何在Struts2的特定<div>元素中显示验证消息

java - JPA 和 InnoDB,以及 JSP/JSTL 问题

mysql - 为什么我无法删除用户输入给出的行?