从 servlet 返回到 JSP 时,Javascript 更改消失

标签 java javascript jquery jsp servlets

晚上好, 我在连接到 servlet 的 JSP 页面上有一个表单,该表单有一些使用 JavaScript 的动态部分,例如向表中添加一行或根据选择元素上的所选选项添加文本字段,实际上我的问题是我在 servlet 端进行了一些验证,因此当我转到 servlet 来检查(国民 ID)时,例如,如果我的验证存在任何问题或任何违规,我会强制使用以下命令返回表单:

if (dbm.MatchIdNumber(Candidate.getRegNumber(), Candidate.getNationalID()) == false) {
                    out.println("<script>\n"
                            + "     alert('Your National Id does not match your Registration Number');\n"
                            + "</script>");
                    out.println("<script>\n"
                            + "     window.history.go(-1);\n"
                            + "</script>");
                }

发生的情况是,当我返回表单时,我丢失了所有 JavaScript 更改,这非常重要。 我已经阅读了一段时间,认为使用 ajax 可能是我的最佳解决方案,但这是我的问题:

  1. 有没有一种方法可以在不使用 ajax 的情况下在访问 servlet 之前从 JavaScript 或 JQuery 调用 java 方法!?!
  2. 有没有一种方法可以从 servlet 返回到 jsp 页面,并且能够保留所有 JavaScript 更改!?
  3. 如果没有!!,在我的例子中如何使用ajax?!

非常感谢

最佳答案

  1. 没有。 JavaScript 在用户的浏览器上运行,而您的 Java 代码在您的网络服务器上运行,因此基本上两者之间通信的唯一方法是通过 HTTP 请求。

  2. 如果您不想使用 AJAX,则可以在将表单提交到服务器进行验证时提供所有相关信息。您可以传递重新生成表单所需的所有信息,例如存在哪些新字段等

  3. 首先,您需要向执行验证的 Java Web 应用程序添加一个新的 Web 服务。为了实现这一点,您可以向您的 servlet 添加额外的逻辑(以便它查找像“doValidation=1”这样的请求参数,并在存在时执行验证),或者编写一个不同的 servlet 来处理验证本身。您需要决定表单数据应采用的格式以及应如何返回验证信息。

    在前端页面上,您需要修改表单的行为,以便当您需要进行验证时,它会向该 Web 服务执行请求并传递表单数据。我可能会使用 jQuery 执行此操作,并执行类似 jQuery.ajax(...) 的操作,并将表单内容作为 JSON 对象传递。

    当您的验证 servlet 从 ajax 调用返回数据时,您需要根据它提供的数据更新表单。如果我这样做,我可能只会让 servlet 返回一个像 {errorMessage:"..."} 这样的 JSON 对象,并且我会使用 jQuery 将一个元素添加到包含验证错误发生时的文本的表单中。如果 servlet 返回空字符串或 JSON 对象或其他内容,我会认为验证成功。

关于从 servlet 返回到 JSP 时,Javascript 更改消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28398515/

相关文章:

javascript - 滚动时编辑 Div(就像在谷歌文档中一样)

javascript - Knockout Js 计算出在模型中不起作用

javascript - 具有相似功能时简化 Javascript

javascript - 纯javascript中jquery点击和addEventListener ("click"之间的区别)

java - 文件上传后如何获取下载地址

java - 检查类声明中的双空格

java - 进行Java编译时不获取输入

java - 如何在 Windows 路径系统中添加 Java bin 文件夹路径

javascript - 稍后在 Promise 上添加子句

javascript - Bootstrap 下拉菜单居中对齐