我正在尝试遍历属性文件中的一组键,以便仅输出“ message.pX”。
a.property=foo message.p1=a message.p2=b message.p3=c some.other.property=bar
我不知道文件中会有多少个带有前缀(message.p)的属性,因此我想显示所有存在的属性。我已经有一个使用ResourceBundle进行处理的bean类,并为语言环境提取正确的包,但是是否有像这样的标准标签可以处理此问题?
没有标准的方法来处理此问题。由于您显然已经完全可以控制resourcebundle的创建,因此最好的选择是引入一个新的关键字/惯例,例如以结尾的键.list:
.list
<c:forEach items="${bundle['message.p.list']}" var="p"> <p>${p}</p> </c:forEach>
..并创建一个自定义,ResourceBundle其中您将其覆盖handleGetObject()以返回所需的值a List<String>,例如:
ResourceBundle
handleGetObject()
List<String>
protected Object handleGetObject(String key) { if (key.endsWith(".list")) { String listkey = key.substring(0, key.length() - 5); List<String> list = new ArrayList<String>(); for (int i = 1; containsKey(listkey + i); i++) { list.add(String.valueOf(getObject(listkey + i))); } if (!list.isEmpty()) { return list; } } return getObject(key); }