Вопрос

<c:set var="nameLookup" value="${names}" />
<c:forEach var="result" items="${results}">
    <tr>        
        <td>${result.uglyDisplayName}</td>
        <td>${result.phonenum}</td>
    </tr>
</c:forEach>

Это отрывок из jsp, который я пытаюсь редактировать.

Результаты – это List<Object> возвращается в ModelAndView от контроллера, каждый из которых Object имеет getUglyDisplayName и getPhonenum.Мне на самом деле не совсем понятно, как это работает.Я думаю, JSP что-то делает getClass().getName() или что-то за кадром?Любые указания на этот процесс были бы поучительны.В любом случае, эта часть работает.

В контроллере я добавил еще один объект, который будет возвращен в ModelAndView.Это HashMap с более красивыми отображаемыми именами, для которых ключевыми являются уродливые отображаемые имена.Поэтому я хочу заменить этот первый td чем-то вроде этого:

<td>${nameLookup.get(result.uglyDisplayName)}</td>

Очевидно, это не работает, иначе я бы не писал здесь.Я пошел дальше и установил переменную для имени, под которым я поместил HashMap в ModelAndView (верхняя строка), но я не уверен, что это правильный способ добраться до этого объекта.

Это было полезно?

Решение

Первую часть («что делает JSP») см. Язык выражений JSP.

Для второй части попробуйте:

<td>${nameLookup[result.uglyDisplayName]}</td>

мне бы не хотелось ругаться это сработает (я давно не пользовался JSP), но попробовать стоит.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top