создать таблицу JSP, используя файл свойств - PullRequest
1 голос
/ 07 июня 2011

Каков наилучший способ создать таблицу 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

1 Ответ

2 голосов
/ 07 июня 2011

Вы должны использовать java.util.Properties вместо 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!

...