我目前有javascript:
var target = getTarget();
我想检查目标不是以"选择"所以我正在考虑使用java方法startsWith这样做,因为我无法在javascript中找到一个等价物
所以我做了:
<%if(!target.startsWith(select)%>
{
targetValue = getTargetValue();
}
我最终得到一个错误说明:
目标无法解决
如果我使用&lt; %%&gt;,我可以从理解中解决这个问题。然后我可以使用java代码
答案 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){}