使用属性文件创建一个jsp表

时间:2011-06-06 23:08:43

标签: jsp properties jstl el resourcebundle

从属性文件创建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

执行此操作

1 个答案:

答案 0 :(得分:2)

您应该使用java.util.Properties而不是java.util.ResourceBundleResourceBundle用于完全不同的目的,并且不应该滥用加载属性的“简单方法”,因为它默认从类路径中查找资源。

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