alert()在JSP中不起作用

时间:2018-08-29 17:37:41

标签: javascript java jsp

我正在调用Javascript test()函数以进行验证,然后才能提交。此函数具有返回验证逻辑的Java scriptlet,并更新了布尔变量。使用此布尔变量,我正在检查此js函数是否应返回true或false。如果为假,则为否定验证情况,而为真性验证。

一般代码如下:

<% boolean check = false ; %>
<script>
function test(){
/*
* java code for updating test variable for validating values on the jsp page
*/

if(!check){
<% System.out.println("this runs ! "); %> // line 1
alert("validation fails"); // line 2
return false;
}
else return true;

}
</script>
..
..
<input type="submit".. onclick="return test()">
..
..

在某处出问题了吗?我一直在尝试很多事情以使第1行运行,但事实并非如此。我的代码执行到达了第1行的if检查的内部,但没有警告,即第2行,并且验证功能也无法正常工作。

有人有类似的问题吗?分辨率是多少?

3 个答案:

答案 0 :(得分:0)

我看到的问题是boolean check的声明是在Java中进行的,而对它的测试是在生成页面的Javascript中进行的。生成的页面中没有Javascript变量check

答案 1 :(得分:0)

“ check”是Java变量,而不是javascript变量。因此,尝试if(<%=!check%>)

答案 2 :(得分:0)

您非常困惑服务器端代码和客户端代码之间的区别。从概念上讲,它们是完全独立的。您的服务器端代码是这样的:

boolean check = false;
System.out.println("this runs ! ");

注意两点:

  1. 您定义了一个从未使用过的变量。
  2. 该消息将始终打印到输出,因为没有理由不这样做。

您的客户端代码是这样的:

function test(){

    if(!check) {
        alert("validation fails");
        return false;
    }
    else return true;

}

如果您成功调用test(),则会发现由于check未定义,这将在浏览器的控制台上产生错误。


关于如何更正此问题 ,这实际上取决于您在此处实际尝试执行的操作。 “我想在JavaScript中使用Java变量”不是您要解决的问题。从此退一步,编写此代码后必须有一个 reason 。不管是什么原因,鉴于您在之前错误地选择了一条路径,因此很可能有比沿着这条道路走下去更好的方法

但是,如果您只想将该变量输出到JavaScript,则可以执行以下操作:

if(<%=!check%>) {
    alert("validation fails");
    return false;
}

这将输出在服务器上评估!check 的结果,并且该结果将是嵌入在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
*/

然后我们将无法在此问题的范围内确定这一点。