如何使用 <c:set> 创建 Map 并使用 <fmt:message> 给出的值填充它?

问题描述

我需要本地化一个 JSP 文件,其中有很多 <fmt:message>。 现在我有如下代码

<c:set var="translation1">
 <fmt:message key="translation1"/>
</c:set>

<c:set var="translation2">
 <fmt:message key="translation2"/>
</c:set>

<c:set var="translation3">
 <fmt:message key="translation3"/>
</c:set>
.
.
.

但是这些 <fmt:message>显示是动态的,而不是硬编码的。它取决于从 java 文件返回的数组。

数组包含 translation1translation2translation3 等键,它们与上面代码中的键相同。

因此,理想情况下,我应该能够使用数组中的这些键来引用这些本地化消息。

例如:如果array[0].key的值为translation1,我应该使用${${array[0].key}}获取

设置的本地化消息
<c:set var="translation1">
 <fmt:message key="translation1"/>
</c:set>

不支持此语法。

所以我认为使用 <c:set> 创建地图可能会有所帮助。 例如,如果我能做到

// The Syntax is of course wrong,which is what I am asking for help for.
<c:set var="keysMapTranslations">
 translation1: <fmt:message key="translation1"/>  // message value: "ABC"
 translation2: <fmt:message key="translation2"/>  // message value: "DEF"
 translation3: <fmt:message key="translation3"/>  // message value: "GHI"
</c:set>

然后在 HTML 中,我可以做到

<div>
    <c:set var="key" value="${array[0].key}"/>                     // array[0].key = "translation1"
    <c:set var="translation" value="${keysMapTranslations[key]}"/> // keysMapTranslations[key] refers to <fmt:message key="translation1"/>
    ${translation}  // Should display "ABC"
</div>

所以..我想知道如何编写 <c:set var="keysMapTranslations"> 部分来创建地图并用几个 <fmt:message/> 填充它?

提前致谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)