создать таблицу jsp, используя файл свойств

Каков наилучший способ создать таблицу jsp (ключ, значение) из файла свойств.

Сейчас я делаю это с помощью скриптлетов.....

    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


person user620339    schedule 06.06.2011    source источник


Ответы (1)


Вы должны использовать java.util.Properties вместо < a href="http://download.oracle.com/javase/6/docs/api/java/util/ResourceBundle.html" rel="nofollow noreferrer">java.util.ResourceBundle. ResourceBundle служит совершенно другой цели, и не следует злоупотреблять «простым способом» загрузки свойств, поскольку по умолчанию он ищет ресурсы из пути к классам.

Пусть сервлет загрузится и подготовит его для 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-адресу, чтобы отобразить его.

Обратите внимание, что ResourceBundle не реализует java.util.Map!

person BalusC    schedule 06.06.2011