如何设置按钮点击事件并链接到Thymeleaf控制器?

4

我正在尝试编写一些代码,当用户点击按钮时,它将在我的Thymeleaf控制器类中执行一些代码。我尝试查看stackoverflow上其他各种代码,但是我没有找到合适的解决方案。我得到的错误是代码不会打印出所需的语句。

代码:

<button type="button" th:onclick="doStuffMethod()"> Hello</button>

控制器:

    public void doStuffMethod() {
        System.out.println("Success");
    }


据我所知,th:onclick是用于调用JavaScript函数而非控制器。 - LHCHIN
@LHCHIN 感谢您的回答... 我也这么认为。然而,我的目标是当按钮被点击时,它告诉Java连接到我的SQL数据库。如果您有其他方法,请帮助我。 - Kane01
1个回答

5

以下是实现这一简单方法的两个步骤:

步骤1:doStuffMethod设置为/do-stuff可访问。

@RequestMapping(value="/do-stuff")
public void doStuffMethod() {
    System.out.println("Success");
}

步骤2:使用window.location.href访问/do-stuff

<button type="button" th:onclick="|window.location.href='/do-stuff'|">Hello</button>

以上内容中,按下按钮后可以成功调用doStuffMethod(),但是由于没有名为do-stuff的模板,会抛出异常。
因此,更好的方法是创建一个名为doStuff.html的模板,并在doStuffMethod()中以字符串形式返回其名称。

doStuff.html

<h1>Success</h1>

并将您的控制器修改如下:

@RequestMapping(value="/do-stuff")
public String doStuffMethod() {
    System.out.println("Success");
    return "doStuff";
}

非常感谢您的建议。但是,当我调用该方法并且它抛出doStuff.html时,它只会显示一个空白页面并显示成功吗?还是有一种方法可以忽略显示页面并保持在当前页面上? - Kane01
@kane01 当然可以!你可以返回当前页面的模板名称。 - LHCHIN
1
@kane01 你好,如果我的帖子解决了问题,请将其接受为答案,谢谢! - LHCHIN

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接