java - 在 freemarker 模板中从 javascript 调用 Java 类的方法

标签 java javascript spring-mvc freemarker

我有一个 freemarker 模板,其中包含 javascript,我使用 spring mvc 传入 java 对象“emailer” 。

不知何故,在这个 freemarker 模板中,我想从 freemarker 模板中的 javascript 调用 emailer 对象的“sendEmail(params, ..)”方法。我知道如何从 freemarker 调用 java 方法(常规方式 - 例如: How do I call java methods on an object from a FreeMarker template? ),但我不知道如何在 javascript 中调用 java 方法。

这可能吗?如果是这样,怎么办? 如果不是,有哪些替代方案?

总体目标是从下拉列表中获取一个值(使用 JavaScript),然后在按下按钮时调用的 java 方法中使用该值。

提前致谢!如果需要更多信息,我很乐意提供。

最佳答案

这并不是这些技术如何协同工作的唯一可能组合,但在通常的流程中,您所期待的事情是不可能的:

  • Java 调用(通过 Spring 介导)呈现 FreeMarker,允许回调到 Java 代码,如下所示它会处理。
  • 此呈现的字符串(可能恰好包含一些 Javascript)通过 HTTP 传送到客户端浏览器。此时,Java 执行已完成。
  • 在浏览器中,解析生成的文本,并运行 Javascript。这里没有服务器的直接知识,也没有办法回调已完成的控制线程。

因此,除非您正在做一些更不寻常的事情,否则您不能做您所建议的事情。

有一些工具允许客户端 Javascript 回调到服务器并与那里的 Java 进行交互。这样你就可以组装一些东西。但您不会简单地直接调用 Java,而无需进行更多工作。

关于java - 在 freemarker 模板中从 javascript 调用 Java 类的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17823251/

相关文章:

java - 如何在一个 Spring 应用程序的 web.xml 中注册多个 servlet

javascript - 将 evt 监听器附加到动态创建的类

javascript - 为什么 jQuery html() 在 IE10 的网页中运行时失败

spring-mvc - Spring-Roo 是否为查找器提供排序功能?

spring-mvc - Spring boot rest API @Valid @ExceptionHandler 只在 RestController 中工作

java - 如何检查注释方法的引用

java - 从 JAVA 程序使用 dcm4che 连接到 dcm4chee

java - hashCode() 用于在 HashMap 中使用的对象数组

javascript - 如何缩小自定义Chartjs水平线的高度并增加线宽?

java - 如何使用多个 Controller 或如何正确使用 Apache Tiles?