gpt4 book ai didi

java - Play Framework : Controller action runs every load

转载 作者:行者123 更新时间:2023-12-02 06:55:10 25 4
gpt4 key购买 nike

有谁知道为什么每次重新加载页面时我的操作都会运行。我有一个带有按钮的页面,单击它时应该运行该按钮。但现在它似乎在我加载页面时运行。

这是文件中的按钮和 JavaScript deliverables.scala.html

<input type="button" class="btn success" id="add" value="Export to Excel" onclick="JavaScript:generateExcelClick()" />

<script>
function generateExcelClick(event)
{
window.location = "@Application.generateExcel(currentPage)";
}
</script>

还有我的 Controller :

public static void generateExcel(List<Infoobject> list) {
...creating a file (works)
...No return
}

如何更改此代码,使其仅在单击按钮时运行?该操作不应呈现另一个页面或类似的内容。我只想生成一个文件。

谢谢!

编辑

我尝试过 @controllers.Application.generateExcel(currentPage);和 @Application.generateExcel(currentPage);在我的 Javascript 函数中,但即使我不单击按钮,它仍然会创建文件。

我还检查了 @Application.generateExcel(currentPage);不从另一个站点运行 och 函数。

请问有人吗?

最佳答案

一点解释:

当你在 Scala View 中编写时,你会说

@Application.generateExcel(currentPage)

它在 Controller Application中运行函数generateExcel

做什么

您不希望它立即运行该函数。你想让它去那里onClick

所以使用

@routes.Application.generateExcel(currentPage)

这会输出该函数的链接

但是要使其发挥作用,您的路由中必须有一个指向该函数的 (GET) 链接

将其添加到路线

GET  /whatever/:thing                 controllers.Application.generateExcel(thing: List<path.InfoObject> list)

但是

这是一个坏主意。为什么?因为将整个列表放在 URL 中并不好。

  1. 您是否在网址中看到过复杂的列表
  2. 网址必须少于 2000 个字符

该怎么办

将列表作为 POST 数据发送。根据您获取数据的方式,您必须弄清楚

关于java - Play Framework : Controller action runs every load,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17482984/

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