首页 > 解决方案 > 如何在从 html 中单击时运行 java 方法?

问题描述

我希望在屏幕上显示的数据中添加一个排序按钮。在 monet,我设置了我的仓库,如图所示。

@Repository
public interface PlayerRepository extends JpaRepository<Player, Long> {

Player findAllById(Long id);
List<Player> findByOrderByPlayerNameAsc();
}

在我的控制器类中,我有它:

@GetMapping("/player")
public String displayPlayer(Model model) {

    model.addAttribute("player", service.findAll());

    return "/player";
}

我希望能够创建一个新方法并拥有它,以便当我单击应用程序的 html 上的按钮时,它会调用此方法并对数据进行排序。在加载屏幕的那一刻,它显示所有未过滤的数据,如果我将其更改为使用“findByOrderByPlayerNameAsc”,它会在加载时自动过滤。但我希望这仅在单击按钮时发生。

 public String displayPlayerFilteredByName(Model model) {

    model.addAttribute("player", service.findByOrderByPlayerNameAsc());

    return "/player";
}

这可以简单地使用 java 和 html 吗?或者有没有使用 JS 的替代方案?

标签: javascriptjavahtmlspringjpa

解决方案


避免 JavaScript 和动态前端的唯一方法是从后端新生成的视图或播放器的 .html 请求。

  1. 这需要设置一个新的映射,例如。
@GetMapping("/players/asc-names")
public String displayPlayersByPlayerNameAsc(Model model) {
   ...
}

其中按钮将只是指向新端点的链接。

  1. 另一种方法是向您提供更多信息以获得请求并通过后端/player提取它。@RequestBody但这已经要求在按钮上设置一些 JavaScript。

  2. 如果您的应用程序还不太复杂。我会检查诸如 Angular 之类的前端框架,这可能会使将来更容易扩展。


推荐阅读