【发布时间】:2022-01-18 04:31:44
【问题描述】:
我使用的是 Spring/SpringMVC 5.x 版本,Tomcat 服务器上带有 Thymeleaf 和 Bootstrap。
我需要问一些对你来说可能看起来很“st@pid”的问题。
在我的 html 视图中,我有以下按钮或链接:
<input type="button" .../>
<a .../>
我不需要提交东西,所以我只使用一个简单的按钮,所以我认为我不需要任何表单(除非我需要这个)。
在这个 html 视图中(因为我在 html 标签中添加了 thymeleaf 库),我需要以某种方式添加, (但我不知道如何),对于这个按钮或链接,Spring EL 或 Thymeleaf EL 的表达式,所以我可以从 我通过在控制器中添加的模型在视图中传递的 Spring bean,例如:
${myBean.doSomething()
// or
${myBean.doSomething(parameters)
如果这无法理解,我可以用一些代码更新我的问题(我相信 Spring 开发人员 明白我在说什么)。
我不知道如何传递这个表达式。要使用按钮或链接标签的什么属性? 我为按钮使用了“action”属性:
<input type="button" th:action="${myBean.doSomething()".../>
或链接标签中的“href”属性:
<a th:href= "${myBean.getStringUrlAndDoSomething()"/>
非常重要的信息
当我启动我的 tomcat 运行页面时,EL 中的操作在页面加载时成功运行。当我按下按钮或链接时,什么也没发生。
我知道我不能使用“onclick”属性,因为我们在那里编写 JS 代码。 但我需要运行 Java Spring 代码。
关于解决我的问题有什么想法吗? 提前致谢
【问题讨论】:
-
你不能。按钮应触发表单提交或 ajax 请求以在服务器上执行操作。使用简单的 EL 表达式是行不通的。
-
就像@M.Deinum 所说,您需要一个表单或一个ajax 请求。如果您不喜欢为该请求编写 JavaScript,可以查看htmx.org,它允许从 html 属性触发 ajax 请求。
-
"当我启动我的 tomcat 运行页面时,EL 中的操作在页面加载时成功运行。当我按下按钮或链接时,没有任何反应。" -> 这是正常的,因为 Thymeleaf 在将模板转换为服务器上的 HTML 时会执行一次该代码。
-
... 我该如何做这些事情,在这种情况下我无法通过 bean 方法控制它们?谢谢
标签: java html spring thymeleaf