0

我有一个链接到 javabean 的 jsp,其中的一些代码在每次单击按钮时使用 jsp:setproperty 将 bean 中的变量减一(它位于单击按钮时运行的 javascript 函数内)。

但是,代码在每次刷新页面时运行,而不是在调用函数时运行。我很确定我知道为什么(jsp 在服务器上运行,javascript 在客户端运行,因此 js 无法与 java 代码交互),但我不知道如何正确地执行类似的操作.

我是 javabean 新手,所以我可能忽略了一些东西。

谢谢。

编辑:我最终做了一些完全不同的事情,并使用在 javascript 中制作了一个隐藏表单,将信息提交到不同的 jsp 并重定向回来。当我可以从 URL 参数中获取它时,它的工作方式有点像与 jsp 代码共享一个 javascript 变量。

4

1 回答 1

0

你说的对。JavaScript 在与 JSP 不同的执行环境中运行。更准确地说,您的 JSP 被编译成一个 Java 类(由容器),该类具有与 servlet 类似的结构。您编写的所有 JSP 代码都被翻译成 Java 并放入 Java 类的 _jspService() 方法中。当浏览器对 JSP 页面发出请求时(单击链接或刷新浏览器),容器调用 Java 类的 _jspService() 方法,执行所有已翻译的 JSP 代码并向浏览器返回响应,通常在网页的形式。

因此,如果您的 JSP 包含将变量加一的代码,那么只有在您单击指向 JSP 的链接或刷新页面时才会执行此操作。

有两种可能的解决方案:

  1. 当您单击按钮时,让 JavaScript 刷新页面。
  2. 使用 AJAX 调用只返回变量更新值的 servlet。然后使用 JavaScript 将 web 中的值替换为 AJAX 调用返回的值。

这个问题可能对 AJAX 有帮助:ajax call to servlet and redirect to jsp

祝你好运。

于 2013-10-11T08:09:37.113 回答