JSP解析url并匹配关键字

时间:2012-03-05 13:19:31

标签: javascript jsp url

这是我的问题,我正在使用jsp脚本,尝试匹配请求网址中的关键字并执行某些操作:

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

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

但是这个doest工作......我不确定问题出在哪里但是我希望它像url包含这个字符串一样,进入if条件。

谢谢

2 个答案:

答案 0 :(得分:2)

您正在混合JSP / EL和JavaScript,就像它们同步运行一样。这是错的。 JSP / EL在Web服务器中运行,并生成在webbrowser中执行的HTML代码。 JavaScript(JS)是生成的HTML代码的一部分,仅在webbrowser中运行。

您需要在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>

但这没有任何意义。无论您需要解决什么功能需求,您都需要三思而后行。随意提出一个关于以正确方式解决具体功能要求的新问题。

答案 1 :(得分:0)

如果您想要一个请求页面的参数,请使用${param.paramName}。所以在这种情况下${param.key}。请参阅the docs中的隐含对象。如果您只想检查它是否值,请尝试${not empty param.key}