URL разбора JSP и соответствующие ключевые слова - PullRequest
0 голосов
/ 05 марта 2012

Вот мой вопрос, я использую сценарий jsp, пытаюсь найти ключевое слово в запросе URL и что-то сделать:

    <script>
     $url = '${pageContext.request.requestURL}';

    if("${fn:contains(url, 'key')}" == true){
        ...
    }
....

Но это работает ... Я не уверен, где проблемано я хочу, чтобы это было так, когда URL содержит эту строку, перейдите к условию if.

Спасибо

Ответы [ 2 ]

2 голосов
/ 05 марта 2012

Вы смешиваете JSP / EL и JavaScript, как будто они работают синхронно.Это не верно.JSP / EL работает в веб-сервере и генерирует HTML-код, который выполняется в веб-браузере.JavaScript (JS) является частью сгенерированного HTML-кода и работает только в веб-браузере.

Вам необходимо сделать это либо полностью в JSP / EL, либо полностью в JavaScript.Вы можете использовать JSP / EL для динамического генерирования кода JS, который впоследствии выполняется, когда страница попадает в браузер.Щелкните правой кнопкой мыши страницу в браузере, выполните Просмотр источника , чтобы увидеть, что сгенерировал JSP / EL.Вы не должны видеть ни одной строки JSP / EL.Вы должны видеть только код HTML / JS.Это именно то , что JS-код, который затем выполняется.

Вы используете функцию JSP EL для проверки переменной JS, которая в данный момент вообще не находится в области видимости переменной.Это не сработает.Он может проверять только переменные JSP / EL.

Вот как вы можете это сделать на чистом JS:

<script>
    var url = window.location.href;

    if (url.indexOf('key') > -1) {
       // ...
    }
</script>

Если вы действительно настаиваете на том, чтобы делать это с помощью JSP /EL, вы можете сделать следующее:

<script>
    var url = '${pageContext.request.requestURI}';

    if (${fn:contains(pageContext.request.requestURI, 'key')}) {
       // ...
    }
</script>

Затем будет сгенерирован следующий код JS (щелкните правой кнопкой мыши страницу в браузере и Просмотреть исходный код , чтобы увидеть его):

<script>
    var url = '/some/uri';

    if (true) {
       // ...
    }
</script>

Но это не имеет смысла.Какую бы функциональную потребность вам не пришлось решить, вам нужно дважды подумать о правильном подходе.Не стесняйтесь задавать новый вопрос о правильном решении конкретных функциональных требований.

0 голосов
/ 05 марта 2012

Если вы хотите параметр, с которым страница запрашивалась, используйте ${param.paramName}.Так что в этом случае ${param.key}.Смотрите неявные объекты в документах .И если вы просто хотите проверить, имеет ли оно значение, попробуйте ${not empty param.key}.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...