如何在jsp的java部分使用javascript变量

时间:2014-06-16 14:51:58

标签: java javascript jsp

我目前有javascript:

var target = getTarget();

我想检查目标不是以"选择"所以我正在考虑使用java方法startsWith这样做,因为我无法在javascript中找到一个等价物

所以我做了:

<%if(!target.startsWith(select)%>
    {
        targetValue = getTargetValue();
    }

我最终得到一个错误说明:

目标无法解决

如果我使用&lt; %%&gt;,我可以从理解中解决这个问题。然后我可以使用java代码

2 个答案:

答案 0 :(得分:0)

Java在服务器端运行,而JavaScript在客户端运行。生成HTML时执行Java代码,而当生成的HTML下载到客户端浏览器并且浏览器将HTML呈现给最终用户时,将执行JavaScript。简而言之: Java代码无法访问JavaScript代码,反之亦然 1

您的具体问题:Java服务器代码(在scriptlet中)中没有声明target变量。您应该使用纯JavaScript来实现您想要/需要的。这是一段改编自How to check if a string “StartsWith” another string?的代码(使用第二多的投票答案,因为它比接受的答案短):

var target = '';
if (getTargetValue().lastIndexOf('select', 0) === 0) {
    target = getTargetValue();
}

此外,您应该avoid writing Java code directly in JSP


1 :您可以在HTML中编写 Java变量的内容,将数据分配给JavaScript变量,但这只能在生成HTML时完成。如果执行ajax操作,则不会重新执行任何Java代码 ,因此不会重新评估任何scriptlet(<% %>内的内容)。

答案 1 :(得分:0)

target是一个JavaScript变量,因此当您尝试使用它来调用Java方法时,.jsp页面将查找target作为Java变量,而不是JavaScript。解决方法可能只是:

if(target.substring(0, select.length) !== select){}