gpt4 book ai didi

javascript - 如何使用 java 脚本 window.location 将参数传递给 play 框架中的 java 方法?

转载 作者:行者123 更新时间:2023-11-30 19:22:34 25 4
gpt4 key购买 nike

我想使用 javascript 中的 window.location 在我的 java 文件中调用一个带参数的方法。我尝试了不同的方法但无法调用该函数。当我尝试打印我传递的值时,它正在控制台中登录,但是当我尝试在方法中调用它时,它抛出值未找到错误。我应该对我的代码进行哪些更改才能调用该方法?

我为 getUsers 所做的不带参数的调用工作正常。

对于带参数的调用,我尝试将它作为一个单独的字符串并尝试连接然后分配给 window.location 即使它没有工作。我想在我的 Controller 中成功调用该方法。

尝试使用单引号、@ 和 $。

<script>
function displayPopUp(stri) {

window.location = "@routes.UserController.deleteUser(stri)";


}
window.location = "@routes.UserController.getUsers()";
</script>

最佳答案

简而言之 - 这是不可能的。

@routes.UserController.deleteUser(stri)是在服务端编译的,function displayPopUp(stri)是在客户端运行的,所以接下来的代码会没有“按预期”工作:

<script>
function displayPopUp(stri) {
window.location = "@routes.UserController.deleteUser(stri)";
}
</script>

解决方案

Javascript 反向路由:

https://www.playframework.com/documentation/2.6.x/JavaJavascriptRouter https://www.playframework.com/documentation/2.6.x/ScalaJavascriptRouting

快速示例:

在 Controller 中创建一个 javascriptRoutes action :

如果您使用 Java:

public Result javascriptRoutes() {
return ok(JavaScriptReverseRouter.create(
"jsRoutes", routes.javascript.UserController.deleteUser()))
.as("text/javascript");
}

如果您使用 Scala:

def javascriptRoutes = Action { implicit request =>
Ok(
JavaScriptReverseRouter("jsRoutes")(
routes.javascript.UserController.deleteUser
)
).as("text/javascript")
}

添加相应的路由:

GET     /javascriptRoutes      controllers.Application.javascriptRoutes

加载javascript 路由器:

<script type="text/javascript" src="@routes.Application.javascriptRoutes"></script>

现在您可以在客户端 javascript 中使用它们

<script>
function displayPopUp(stri) {
window.location = jsRoutes.controllers.UserController.deleteUser(stri).url;
}
</script>

关于javascript - 如何使用 java 脚本 window.location 将参数传递给 play 框架中的 java 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57303486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com