javascript - 在 play 框架中将 javascript 变量转换为 scala

标签 javascript scala playframework csrf

我在 javascript 中有一些变量:

var something = 1;
var url = "@CSRF(routes.Some.thing(something))";

我在编译期间遇到错误,因为“某物” 没有引用 javascript 变量,换句话说;编译器无法识别它。是否可以以某种方式转换/注入(inject) javascript 变量?此外,这是否在 javascript 中实时工作,或者我是否需要准备一个包含每个可能的“something”值的 "@CSRF(routes.Some.thing(something))" 数组?

这应该是一个简单的 rest 调用,在路由文件中可以看到:

/something/:something controllers.Some.thing(something : Long)

另一种方法是使用表单,但我不想这样做。

最佳答案

您需要使用 Javascript 路由并将 CSRF token 添加到请求中。

Javascript 路由描述:https://www.playframework.com/documentation/2.6.x/ScalaJavascriptRouting

看看我对问题的回答,并解释了如何将其用于 Assets (“正确且长期的解决方案”),其他事件的用法是相同的:How to update src of a img from javascript in a play framework project?

因此在您的情况下,Javascript 路由生成可能如下所示:

JavaScriptReverseRouter("jsRoutes")(
  routes.javascript.Some.thing
)

在 JavaScript 中:

var something = 1;
var url = jsRoutes.controllers.Some.thing(something).url;

最后 - 不要忘记将 Csrf-Token header 添加到请求中。

关于javascript - 在 play 框架中将 javascript 变量转换为 scala,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48646563/

相关文章:

java - '_id'可以与Java UUID映射吗?

playframework - Play 是否支持每个环境的单独路由文件 - dev、uat、prod?

javascript - Ext.js 2 个复选框和事件通过更改监听器触发两次

javascript - 重置 Ionic ios/android 应用程序中的内容

scala - 在 Spark 中读取文件时出错

Scala 类型关键字 : how best to use it across multiple classes

json - 根据其他字段指定的类型读取 JSON 字段

javascript - 如何捕获内联编辑kendo ui网格的保存行事件

javascript - MouseOver/MouseOut 事件监听器继承到子节点?

scala - 包对象什么时候初始化?