2013-08-19 25 views
0

如何在jsp中调用基于js变量值的java方法?如何在jsp中调用基于js变量值的java方法?

GVAR被定义为一个全局变量,想法是在jsp被加载时给它赋值,一旦赋值,它将在整个应用程序中可用(因为GVAR是全局定义的)问题是每当jsp加载,服务器端代码被执行,下面提到的if块根本不起作用,因为它是客户端。什么是检查js变量不是空的最好方法,然后只调用服务器端代码来填充它。

<script>  
if (GVAR==null) { 
GVAR = <%=MyClass.getData("GVAR") %> ; 
} 
</script> 

我们有越来越由服务器端代码和检查服务器端的条件,每次将成为性能瓶颈,在某些时候填充很多变数。

+0

什么是“GVAR”?它是一个Java脚本变量?如果“是”,那么这是不可能的。 <%= MyClass.getData(“GVAR”)%>是一个服务器端代码,无论客户端(Java脚本)代码如何,它都将执行。我不确定你的要求,但使用AJAX可能有助于这种情况。 – Saurabh

+0

是的..它是一个javascript变量(var GVAR) – kanika

+0

是的,我知道这是不可能的,我正在探索Rhino来实现这一点。只是想知道是否有任何其他技术可以在这里帮助..让我看看我是否可以在这里适应AJAX调用..唯一的要求是不调用服务器端的所有变量,如果他们已经填充.. – kanika

回答

0

这是非常令人困惑的问题,它说javascript获取的是服务器变量的价值。

在注释中出现那些服务器端变量不存在且必须被调用的地方!

无论如何,让我明确这个概念。好像你正在使用JSP & Servlets。

<%=MyClass.getData("GVAR") %>

你确定它甚至执行和JSP编译罚款?日志中是否有错误?

问上述问题的主要原因是要确保在JSP上有适当的MyClass导入,并且getData()应该是公共静态的(至少看起来是这样)。

如果两个条件都满足,请首先测试函数,看看它是否真的有效。

+0

是的,它是JSP/Servlets的组合.Ofcourse中有导入,只是包含了一行来给出正在发生的事情,并且代码是按预期工作的。 getData()是一个静态方法,它接受一个arg并读取属性文件以获取正在进行请求的变量的值。因此js变量被分配了这个值。这个JS变量是在主题级别定义的,我们将它填充到页面上。但是,当同一页面被渲染时,因为这些值已经被分配给它并且不会改变,所以希望再次停止填充它。希望这会消除混淆。 – kanika

+0

在这种情况下,您可以考虑在sesssion中设置它,并在再次计算之前检查它是否在会话中不可用。或者有各种技术,你可以有一个静态变量和一行代码,不计算它,如果它已经被计算。 –