【问题标题】:Generate JavaScript code in a Java application在 Java 应用程序中生成 JavaScript 代码
【发布时间】:2020-03-20 14:09:18
【问题描述】:

我见过类似的问题,但不一样。 我有一个发送 get 和 post 请求的 java 应用程序。现在的问题是请求需要有一个 CSRTF 令牌,我无法从 ReasteastClient.getcookies 方法获得,所以我编写了一个 JavaScript 代码来获取这个令牌。我正在尝试从我的 java 应用程序生成 JavaScript 代码并获取函数响应。

有什么办法吗?? 谢谢大家。

【问题讨论】:

  • 是哪种应用程序? REST 服务的种类?
  • 我们是在谈论服务还是 jsp/jsf/...?
  • 是的,一个 REST 服务
  • 欢迎来到 Stack Overflow! StackOverflow 不是免费的编码服务。您应该尝试solve the problem first。请更新您的问题以在minimal reproducible example 中显示您已经尝试过的内容。如需更多信息,请参阅How to Ask,并拨打tour :)

标签: javascript java code-generation


【解决方案1】:

要在 Java 中生成 JavaScript 代码,您需要按照以下步骤操作

1.创建您的 JavaScript 文件并添加检索 CSRTF TOKEN 的函数

通过添加功能:

$.get('CSRFTokenManager.do', function(data) {
   var send = XMLHttpRequest.prototype.send,
   token =data;
   document.cookie='X-CSRF-Token='+token;
   XMLHttpRequest.prototype.send = function(data) {
       this.setRequestHeader('X-CSRF-Token',token);
       //dojo.cookie("X-CSRF-Token", "");

       return send.apply(this, arguments);
   };
});

2.将其保存为 Jsfunctions.js 并在您的 java 代码中使用它,如下所示。

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
// read script file
engine.eval(Files.newBufferedReader(Paths.get("C:/Scripts/Jsfunctions.js"), 
StandardCharsets.UTF_8));

Invocable inv = (Invocable) engine;
// call function from script file
inv.invokeFunction("yourFunction", "param");

希望这会有所帮助..!

【讨论】:

  • 非常感谢!这里应该做什么: inv.invokeFunction("yourFunction", "param"); ?
猜你喜欢
  • 2012-04-11
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-20
  • 2011-02-26
  • 1970-01-01
相关资源
最近更新 更多