Как мне перебрать несколько свойств в JSP - PullRequest
2 голосов
/ 19 марта 2010

Я пытаюсь перебрать набор ключей в файле свойств, чтобы выводился только «message.pX».

a.property=foo
message.p1=a
message.p2=b
message.p3=c
some.other.property=bar

Я не знаю, сколько свойств спрефикс (message.p) будет в файле, поэтому я хочу отобразить любой, который присутствует.Я уже получил класс bean-компонентов, использующий ResourceBundle, который обрабатывает его и извлекает правильный пакет для локали, но есть ли стандартный тег, такой какчто может с этим справиться?

Ответы [ 2 ]

1 голос
/ 19 марта 2010

Не существует стандартного способа справиться с этим. Поскольку вы, очевидно, уже имеете полный контроль над созданием ресурсного пакета, лучше всего ввести новое ключевое слово / соглашение, например ключ, заканчивающийся .list:

<c:forEach items="${bundle['message.p.list']}" var="p">
    <p>${p}</p>
</c:forEach>

.. и создайте пользовательский 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);
}
1 голос
/ 19 марта 2010
Properties properties = new Properties();
        try {
            properties.load(new FileInputStream("filename.properties"));
        } catch (IOException e) {
        }

        Enumeration e = properties.propertyNames();

        while (e.hasMoreElements()) {
            String key = (String) e.nextElement();
            //Edited answer
            if(key.indexOf("message.p") != -1 ){
               System.out.println(key + " , " + properties.getProperty(key));
               //Add key and value to a list
            }
            //Edited answer

        }

Я предлагаю вам сделать это внутри класса Servlet или Java и сохранить список свойств в объекте java.lang.List, таком как ArrayList или LinkedList, затем отправить результат в jsp. Избегайте делать это внутри JSP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...