3 回答
TA贡献1777条经验 获得超10个赞
您非常混淆服务器端代码和客户端代码之间的区别。从概念上将它们视为完全独立的。您的服务器端代码是这样的:
boolean check = false;
System.out.println("this runs ! ");
有两点需要注意:
您定义了一个从未使用过的变量。
该消息将始终打印到输出,因为没有理由不应该。
您的客户端代码是这样的:
function test(){
if(!check) {
alert("validation fails");
return false;
}
else return true;
}
如果您成功调用,test()您会发现这将在浏览器的控制台上产生错误,因为check未定义。
至于如何纠正这一点,这实际上取决于您在这里实际尝试做什么。“我想在 JavaScript 中使用 Java 变量”不是您要解决的问题。退一步说,编写此代码背后一定有原因。不管这个原因是,它很可能是有一个更好的办法,而不是继续沿着这条道路要做到这一点,因为你承担了路径错了弯,而前。
但是,如果您只想将该变量输出到 JavaScript,您可以执行以下操作:
if(<%=!check%>) {
alert("validation fails");
return false;
}
这将输出在!check server上评估的结果,该结果将是嵌入在 JavaScript 代码中的原始字符串。我不是100%确定 Java/JSP/etc. 以这种方式评估,但希望你能明白。当然,检查生成的客户端代码以查看它实际输出的内容。 理想情况下,它最终会是这样的:
if(true) {
alert("validation fails");
return false;
}
当然,如果这一点挥手掩盖了更多问题:
/*
* java code for updating test variable for validating values on the jsp page
*/
那么我们将无法在这个问题的范围内确定这一点。
TA贡献1872条经验 获得超3个赞
我看到的问题是, 的声明boolean check
是在 Java 中的,但它的测试是在生成的页面中的 Javascript 中。check
生成的页面中没有 Javascript 变量。
添加回答
举报