Как сравнить две переменные объекта в языке выражений EL?
Я создаю выпадающий список всех языков. Выбор языка по умолчанию для списка будет определяться с помощью информации, добавленной пользователем:
${lang} ${lang}
.equals
, не существует в EL. Посмотрев здесь, я предложил написать свою собственную функцию, а затем импортировать и использовать ее. Поскольку это одна крошечная вещь только для этой страницы, я не хочу начинать создавать библиотеки и т. Д. Только для этого. Я также не хочу создавать специализированные объекты для сервлета, чтобы вернуться с этой дополнительной информацией в них.
Единственное, что я могу сделать, это вернуть фактический html для всей строки опций из сервлета, а не только строки языка, но это кажется мне уродливым, поэтому я надеюсь, что есть более элегантное решение.
- Как распечатать трассировку стека ошибок на странице JSP?
- Tomcat 7 и JSTL
- Как передать параметр в jsp: включить через c: set? Каковы области переменных в JSP?
- Как получить доступ к объектам в языке выражений EL $ {}
- JSTL c: forEach на странице JSP не работает
Каков наилучший план для быстрого исправления сравнения двух строк в EL?
Учебник J2EE 1.4
- Как вложить выражение EL в другое выражение EL
- c: forEach throws javax.el.PropertyNotFoundException: свойство 'foo' не найдено по типу java.lang.String
- Итерация над элементами списка и карты с использованием тега JSTL
- Как сделать Java ResultSet доступным в моем jsp?
- java.lang.NoClassDefFoundError: javax / servlet / jsp / jstl / core / Config
- Как выбрать первый элемент набора с JSTL?
- Собирать и сохранять переданные значения нескольких динамических входов HTML обратно в сервлет
- Как заменить символы новой строки с помощью JSP и JSTL?
В языке Expression вы можете просто использовать оператор ==
или eq
для сравнения значений объектов. За кулисами они фактически будут использовать Object#equals()
. Таким образом, так как до текущей версии EL 2.1 вы не можете ссылаться на методы с другими сигнатурами, чем стандартные методы getter (и setter) (в предстоящем EL 2.2 это было бы возможно).
Таким образом, конкретная линия
должен быть записан как (обратите внимание, что все выражение находится внутри {
и }
)
или, что эквивалентно
Оба они за кулисами грубо интерпретируются как
jspContext.findAttribute("lang").equals(jspContext.findAttribute("pageLang"))
Если вы хотите сравнить постоянные значения String
, тогда вам нужно процитировать его
или, что эквивалентно
который за кулисами грубо интерпретируется как
jspContext.findAttribute("lang").equals("en")
Не уверен, что я прав, но самым простым способом было бы что-то вроде:
Просто скопируйте и вставьте из моего приложения …
НТН