从属性文件创建jsp表(键,值)的最佳方法是什么。
现在我正在使用scriptlets .....
ResourceBundle statusCodes = ResourceBundle.getBundle("statuscode");
Enumeration statusKeys = statusCodes.getKeys();
<%
while (statusKeys.hasMoreElements()) {
String key = (String) statusKeys.nextElement();
String value = statusCodes.getString(key);
%>
<tr>
<td><%=key%></td>
<td><%=value%></td>
</tr>
注意:不要担心语法,这不是完整的代码。
如何使用EL和jstl
执行此操作答案 0 :(得分:2)
您应该使用java.util.Properties
而不是java.util.ResourceBundle
。 ResourceBundle
用于完全不同的目的,并且不应该滥用加载属性的“简单方法”,因为它默认从类路径中查找资源。
让servlet加载并为JSP做好准备。
Properties properties = new Properties();
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("/filename.properties"));
request.setAttribute("properties", properties);
request.getRequestDispatcher("/WEB-INF/properties.jsp").forward(request, response);
由于Properties
实现了java.util.Map
,您只需使用JSTL <c:forEach>
来迭代它。每次迭代都会返回Map.Entry
,而后者又有getKey()
和getValue()
方法。
<table>
<c:forEach items="${properties}" var="property">
<tr>
<td>${property.key}</td>
<td>${property.value}</td>
</tr>
</c:forEach>
</table>
最后通过其URL调用servlet以使其显示。
请注意,ResourceBundle
未实现java.util.Map
!