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

Javascript 如何在jsp中调用基于js变量值的java方法?,javascript,jsp,scriptlet,Javascript,Jsp,Scriptlet,如何在jsp中调用基于js变量值的java方法 GVAR被定义为一个全局变量,其思想是在加载jsp时为其赋值,一旦赋值,它将在整个应用程序中可用(因为GVAR是全局定义的)。问题是,只要加载jsp,服务器端代码就会执行,下面提到的if块根本不起作用,因为它是客户端。检查js变量not null然后只调用服务器端代码来填充它的最佳方法是什么 <script> if (GVAR==null) { GVAR = <%=MyClass.getData("GVAR") %>

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

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

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

如果(GVAR==null){
GVAR=;
}

我们有许多由服务器端代码填充的变量,每次检查服务器端条件都会在某个时候成为性能瓶颈。

这非常令人困惑,因为它说javascript从服务器变量获取值

如注释所示,这些服务器端变量不存在,必须调用

无论如何,让我澄清一下这个概念。看起来您正在使用JSP和servlet

您确定它正在执行并且JSP编译良好吗?日志中有没有错误

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


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

什么是“GVAR”?它是Java脚本变量吗?如果“是”,则不可能。是一个服务器端代码,它将不考虑任何客户端(Java脚本)代码而执行。我不确定您的需求,但在这种情况下使用AJAX可能会有所帮助。是的。这是一个javascript变量(var GVAR),是的,我知道这是不可能的,我正在探索Rhino以实现同样的目标。我只是想知道是否还有其他技术可以帮上忙。让我看看我是否能适应这里的AJAX调用。唯一的要求是,如果所有变量都已填充,则不需要调用服务器端。是的,它是JSP/Servlets的组合。当然,有导入,我们刚刚加入了这行代码,让您了解正在发生的事情,是的,代码按照预期工作。getData()是一个静态方法,它接受一个arg并读取属性文件以获取请求所针对的变量的值。因此,js变量被赋予此值。这个JS变量是在主题级别定义的,我们将它填充在页面上,但是当页面已经赋值给它并且不会改变时,它希望停止再次填充它。希望这能消除混乱。在这种情况下,您可以考虑将它设置在SISECT中,并检查它是否已经可用。再次计算之前的会话。或者有各种各样的技术,你可以有一个静态变量和一行代码,如果已经计算过的话,不去计算它。