这是我的问题,我正在使用jsp脚本,试图在请求url中匹配一个关键字,然后做一些事情:
<script>
$url = '${pageContext.request.requestURL}';
if("${fn:contains(url, 'key')}" == true){
...
}
....但这项工作...我不确定问题出在哪里,但我希望当url包含这个字符串时,转到if条件。
谢谢
发布于 2012-03-05 21:36:31
您混合了JSP/EL和JavaScript,就好像它们同步运行一样。这是错误的。JSP/EL在get服务器上运行,并生成HTML代码,这些代码在get浏览器中执行。JavaScript (JS)是生成的HTML代码的一部分,仅在and浏览器中运行。
您需要完全使用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>但这没有任何意义。无论您需要解决什么功能需求,您都需要仔细考虑正确的方法。请随时询问有关以适当方式解决具体功能需求的新问题。
发布于 2012-03-05 21:29:41
如果需要用来请求页面的参数,请使用${param.paramName}。所以在这种情况下,${param.key}。请参阅the docs中的隐式对象。如果只是想检查它是否有值,可以试试${not empty param.key}。
https://stackoverflow.com/questions/9567320
复制相似问题