Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSP解析url和匹配关键字_Javascript_Jsp_Url - Fatal编程技术网

Javascript JSP解析url和匹配关键字

Javascript JSP解析url和匹配关键字,javascript,jsp,url,Javascript,Jsp,Url,这是我的问题,我正在使用jsp脚本,试图匹配请求url中的关键字并执行以下操作: <script> $url = '${pageContext.request.requestURL}'; if("${fn:contains(url, 'key')}" == true){ ... } .... $url='${pageContext.request.requestURL}'; 如果(${fn:contains(url,'key')

这是我的问题,我正在使用jsp脚本,试图匹配请求url中的关键字并执行以下操作:

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

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

$url='${pageContext.request.requestURL}';
如果(${fn:contains(url,'key')})=true){
...
}
....
但这不管用。。。我不确定问题出在哪里,但我希望它像url包含此字符串时一样,进入if条件


谢谢

如果您需要请求页面时使用的参数,请使用
${param.paramName}
。所以在本例中,
${param.key}
。请参见中的隐式对象。如果您只想检查它是否有一个值,请尝试
${notempty param.key}

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

您需要完全在JSP/EL中完成,或者完全在JavaScript中完成。您可以使用JSP/EL动态生成JS代码,这些代码在页面到达浏览器时执行。在浏览器中右键单击页面,查看源代码以查看JSP/EL生成了什么。您不应该看到任何JSP/EL行。您应该只看到HTML/JS代码。这正是当时执行的JS代码

您正在使用一个JSPEL函数来测试一个JS变量,该变量当时根本不在变量范围内。这是行不通的。它只能测试JSP/EL变量

以下是如何在纯JS中实现这一点:

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

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

var url=window.location.href;
if(url.indexOf('key')>-1){
// ...
}
如果您确实坚持使用JSP/EL进行此操作,则可以执行以下操作:

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

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

var url='${pageContext.request.requestURI}';
if(${fn:contains(pageContext.request.requestURI,'key')){
// ...
}
这将生成以下JS代码(在浏览器中右键单击页面并查看源代码以查看):


var url='/some/uri';
如果(真){
// ...
}

但这毫无意义。无论您需要解决什么功能需求,您都需要仔细考虑正确的方法。请随意提出一个关于以正确方式解决具体功能需求的新问题。

主要用于JavaScript,
$url
用于shell编程,您确定要使用JSP吗?这是JSP中的java脚本代码块。非常感谢,但是我不知道你说的JSP/EL解决方案没有意义是什么意思。。。顺便说一句,当我尝试应用您提供的jsp/el解决方案时,它会在if条件中报告一个“缺少分号”语法错误。只需使用纯JS方法。如果可以用一种语言简单地完成,为什么要用这种既困难又令人困惑的方式呢?不客气。我希望您现在理解JSP和JavaScript不是同一种语言,它们之间完全没有任何关系,除了语言名称的前4个字符和更少或更相似的语法。就像汽车对地毯一样。我在回答你之前的问题时已经把它联系起来了,但这里又是这样,因为你似乎根本没有读过:。它还包含一部分解释了与JavaScript的关系(以及一系列优秀的JSP教程链接)。
<script>
    var url = '/some/uri';

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