2013-02-15 53 views
0

是否有可能检查一个属性是存在于一个请求对象? 我有一定的误差情况下,一个错误信息必须被传递到客户端:检查是否请求属性被设置与jQuery

servlet代码:

request.setAttribute("error", "The following term was not found in the index: " + terms); 
RequestDispatcher dispatcher = request.getRequestDispatcher("graph.jsp"); 
dispatcher.forward(request, response); 

我试了一下这样的,但我没有得到一个警告窗口,在所有...

JSP代码:

<script> 
    var test = "${error}"; 
    if(test != null) 
     alert(test); 
</script> 
+0

从哪里得到'$ {error}'语法?您将需要显示更多的Javascript ... – Ian 2013-02-15 21:15:04

+0

语法错误; jQuery作为一个函数;也许它是$(错误)或类似的东西? – 2013-02-15 21:15:32

+0

如果你的意思是我认为你的意思,那么没有。请求对象只存在于服务器上。到页面呈现,发送到浏览器,脚本运行时,就没有请求对象那样的事情了。 – Archer 2013-02-15 21:15:38

回答

0

如果我读这个权利,你有一个JSP程序输出这个JavaScript。换句话说,您的JSP页面将变量错误设置为字符串值。然后这用于生成JavaScript,以便提醒错误变量的内容。

你的JS代码通常是正确的。有两件事情中脱颖而出对我说:

1)

我测试的代码你的浏览器中添加语言属性的脚本标签(如下图所示)

<script language="javascript"> 
    var test = "${error}"; 
    if(test != null) 
     alert(test); 
</script> 

2)检查错误您在这里,它的作品,当错误值是类似于“你好世界”。测试变量被设置为这个。一个字符串不等于null(尽管空字符串也不等于null,所以你的if语句有点无用)。这让我想,也许从$ {error}输出的字符串可能会有双引号。

假设您的错误是:在索引中找不到以下术语:“鳄梨”。

你产生JS是这样的:

<script language="javascript"> 
    var test = "The following term was not found in the index: "avocado""; 
    if(test != null) 
     alert(test); 
</script> 

注意双引号的双引号的字符串中。这是一个语法错误。

如果您使用chrome打开开发者工具(View> Developer> Console)。重新加载页面。你看到报告的错误消息吗?如果是,那么错误是什么?如果否,请查看源代码并查看生成的JS并将其发布到此处以供审查。

+0

感谢您的详细回复。首先,错误属性只能由servlet设置一些时间,但不能全部设置。意味着它有时会是空的。我想弄清楚是不是这种情况。其次,字符串术语永远不会有双引号或单引号。所以我不会为此担心。第三,JS代码在JSP页面内。我在哪里可以在开发者工具中看到它?我有称为“元素”的视图,我可以在其中看到代码,但没有错误消息。 – PogoMips 2013-02-15 21:52:21

+0

如果我用无效输入触发程序,我的源代码如下所示:var test =“在索引中找不到以下术语:sdfsdfsdf”; if(test!= null) \t alert(test); ...但没有提示消息显示。在另一种情况下(有效输入),有一个空的警报消息,代码如下所示:var test =“”; if(test!= null) \t alert(test); ..在这种情况下,这个属性在servlet中根本没有设置 – PogoMips 2013-02-15 21:53:12

+0

我在这里做了一些假设。我假设你正在通过Web浏览器请求JSP页面。那是对的吗?如果您的网络浏览器是Chrome浏览器,您应该能够打开Chrome的控制台(View> Developer> Console)并查看报告的错误消息(如果有)。 – 2013-02-15 22:29:21

0

你应该检查是否为空,但不是你的情况。 if(test != "")