Я хочу сделать что-то вроде этого:
<display:table name="${summary${index}}">
Но это не работает, выдает исключение: "$ {summary$ {selChrm}}" содержит недопустимое выражение (выражения). Я хотел бы, чтобы пользователь использовал выпадающий список, чтобы выбрать выбор и вставить переменный индекс. Затем таблица покажет соответствующий список объектов javabean, т.е. названный summary01, summary02, и т.д. Как я могу сделать это?Заранее спасибо.
Обновление:Спасибо, ребята. проблема с вложенным EL. Я пытался использовать
<display:table name="summary${index}">
Но ничто не показывает в таблице, так как summary01 является именем переменной. Если я трудно кодирую имя переменной, то оно будет работать:
<display:table name="${summary01}">
Поэтому, как я могу сделать вложенный EL? Если это не находится возможно в JSTL, как я могу достигнуть поведения, которое пользователь может использовать выпадающий список для определения что содержанием быть дисплеем в таблице? Еще раз спасибо.
Вы не можете вкладывать выражения EL. Однако вы можете просто объединить их.
<display:table name="${summary}${index}">
Или, если $ {summary}
на самом деле не является объектом ни в одной из областей, выполните
<display:table name="summary${index}">
Обновите : Хорошо, вам действительно нужен доступ к $ {summary01}
. Если вы заранее знаете область действия, вы можете получить к ней доступ, используя обозначение фигурных скобок. Представьте, что это запрос ограничен областью действия, вы можете получить к нему "простой" доступ следующим образом:
<display:table name="${requestScope['summary01']}">
Но на самом деле вы также можете использовать другую переменную EL в фигурных скобках (просто уберите ее из кавычек):
<display:table name="${requestScope[summary]}">
Итак, мы хотели бы установить ее где-нибудь . Тег JSTL c: set
идеально подходит для этого:
<c:set var="summary" value="summary${index}" />
Это то, что действительно плохо в JSTL: нет прямого способа сделать это если вы хотите сделать это внутри выражения JSTL. Нет оператора конкатенации строк, другими словами.
Вы всегда можете сделать
<something foo='${something} ${something_else}'/>
но это не всегда полезно.
В моем мире я реализовал свою собственную функцию "concat", поэтому я могу сказать
$(foo:bar(mystuff:concat("something", something.else))}