Существует ряд проблем с тем, чего вы пытаетесь достичь.
Код JavaScript (внутри тега <script/>
) выполнен на стороне клиента, а код JSP EL (в теге <c:when/>
и fn:containsIgnoreCase()
) выполнен на стороне сервера.
Два бита кода не работают в одной системе. Они не имеют видимости друг друга
Два бита кода не запускаются одновременно. Код на стороне сервера будет выполнен, так как ответ HTTP генерируется сервером, и полученный HTML-код будет отправлен обратно в браузер. Затем браузер выполнит клиентский код. Поэтому, хотя ваш код javascript возникает до вашего кода JSP EL в JSP-файле, они будут выполняться в разное время - код JSP EL будет выполнен первым (по серверу), а затем JavaScript будет выполнен (браузером)
И, наконец, языки не совпадают. Даже если два бита кода должны были быть выполнены в одной и той же системе, EL - это не JavaScript, а JavaScript - не EL. Переменная, объявленная на одном языке в одном блоке, не будет видна на другом языке в другом блоке.
Вы могли бы написать всю логику вам нужно на одном языке (EL), и он будет выполнен в той последовательности, которую все в той же системе, используя свойства объекта pageContext.request.requestURL
или pageContext.request.requestURI
Вы не можете получить доступ расслоение плотной переменные непосредственно в EL – Arvind
@Arvind: Любой другой способ получить этот url для скрипта. –