我是一个完整的jsp newbe,所以如果这是一个愚蠢的问题,请跟我说吧。
我有一系列动态范围的语言环境键:
default.someWordTable.dynamicKey.XXX = "Some string"
default.someWordTable.dynamicKey.YYY = "Some other string"
default.someWordTable.dynamicKey.ZZZ = "A third string"
etc. etc. (with no special logic to the keynames)
通常我会得到这样的本地化词:
<fmt:message key="someWordTable.dynamicKey.XXX" />
但是,如果我不知道代码点的密钥子集,是否有某种方法可以获得命名空间下所有现有密钥的列表或迭代器?我希望在附近找到一些东西:
<ul>
<fmt:forEach items="someWordTable.dynamicKey.*" var="nextKey">
<li><fmt:message key="someWordTable.dynamicKey.nextKey" /></li>
</fmt:forEach>
</ul>
或者类似的东西:
<fmt:getAllSubKeys key="someWordTable.dynamicKey" var="theKeys" />
<ul>
<c:forEach items="theKeys" var="key">
<li><fmt:message key="someWordTable.dynamic[key]"></li>
</c:forEach>
</ul>
我希望我能够解释我在寻找什么。有谁知道怎么做?
答案 0 :(得分:1)
我不知道你为什么要这样做,但有一点我可以告诉你,ResourceBundle类是一个方法keySet(),它返回一个包含资源键的Set<String>。登记/> 可以将包分配给变量:
<fmt:setBundle basename="com.example.messages" var="bundle"/>
您可以在<c:forEach>
中使用它:
<c:forEach items="{$bundle.keySet()}" var="key">
<li><fmt:message key="{$key}"></li>
</c:forEach>
这里需要注意的一点是,我还没有测试过这段代码。我希望这是对的。我确信您应该能够使用与此类似的表达式语言。至少它应该受Servlet 3.0 +支持。