Я создаю выпадающий список всех языков. Выбор языка по умолчанию для списка будет определен информацией, добавленной пользователем:
.equals
кажется, не существует в EL. Взглянув здесь предложено, чтобы я записал свою собственную функцию и затем импортировал и использовал это. Поскольку это - то от крошечной вещи только для этой страницы, я не хочу должным быть начинать создавать библиотеки и т.д. только для этого. И при этом я не хочу начинать создавать объекты специалиста для сервлета для возврата с этой дополнительной информацией в них.
Только вещь, которую я могу думать, чтобы сделать, состоит в том, чтобы возвратить фактический HTML для целой строки опции от сервлета, а не просто строки языка, но это кажется мне ужасный, таким образом, я надеюсь, что существует более изящное решение.
Каков лучший план относительно быстрого исправления к сравнению двух строк в EL?
В Expression Language вы можете просто использовать ==
или eq
] для сравнения значений объектов. За кулисами они фактически будут использовать Object # equals ()
. Это делается так, потому что до тех пор, пока в текущей версии EL 2.1 вы не сможете вызывать методы с другими сигнатурами, кроме стандартных методов получения (и установки) (в предстоящей версии EL 2.2 это будет возможно).
Таким образом, конкретная строка
<c:when test="${lang}.equals(${pageLang})">
должна быть записана как (обратите внимание, что все выражение находится внутри {
и }
)
<c:when test="${lang == pageLang}">
или, что эквивалентно
<c:when test="${lang eq pageLang}">
Оба являются "за кулисами" примерно интерпретируется как
jspContext.findAttribute("lang").equals(jspContext.findAttribute("pageLang"))
. Если вы хотите сравнить значения констант String
, вам нужно указать его
<c:when test="${lang == 'en'}">
или, что эквивалентно
<c:when test="${lang eq 'en'}">
, которое за кадром примерно интерпретируется как
jspContext.findAttribute("lang").equals("en")
Не уверен, правильно ли я вас понял, но самый простой способ был бы примерно таким:
<c:if test="${languageBean.locale == 'en'">
<f:selectItems value="#{customerBean.selectableCommands_limited_en}" />
</c:if>
Просто скопируйте и вставьте из моего приложения ...
HTH