Вдвойне вложенные переменные EL? - PullRequest
5 голосов
/ 27 сентября 2011

Я использую Spring MVC для моего контроллера, а JSP - мой уровень представления.

Внутри моего контроллера Spring у меня есть:

model.put("issues", dataManager.getIssues());
model.put("functions", dataManager.getFunctions());

Так что теперь внутри моего JSP, яиметь доступ к

${requestScope['issues']}
${requestScope['functions']}

Это все хорошо.Но для того, чтобы мой код был расширяемым, я хотел бы сохранить имя переменной issues и functions внутри базы данных, которая затем будет доступна через свойство объекта configs, который зацикливается.Итак, что я хотел бы закончить, это что-то вроде следующего:

<c:forEach items="${configs}" var="cfg">
    <c:if test="${cfg.configType == 'select'}">
        <th>${cfg.header}</th>
        <td><myTagLib:select values="${requestScope['${cfg.selectorName}']}" /></td>
    </c:if>
</c:forEach>

Где ${cfg.selectorName} будет содержать issues или functions в этом примере.

1 Ответ

7 голосов
/ 27 сентября 2011

Ты рядом.Вам нужно только удалить вложенный ${}, поскольку это неверный синтаксис.

<myTagLib:select values="${requestScope[cfg.selectorName]}" />
...