Использование объекта Java в JSP
-
12-09-2019 - |
Вопрос
<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), но попробовать стоит.