[英]How to call a method in HTML(Thymeleaf, Spring, Java)?
我是 Thymeleaf 的初学者,但我想知道如何用 Thymeleaf 调用 HTML 中的方法。 我正在使用 Spring 引导和 Spring MVC。
我想创建一个名称为“编辑”的按钮,用户将编辑博客的帖子,但如果我想这样做,我必须知道 object Postagem 的 ID 是什么。
我当前的代码 HTML: (blog.html)
<div th:each="postagem : ${postagens}">
<div class="blog-post">
<h2 class="blog-post-title" th:text="${postagem.titulo}"></h2>
<p class="blog-post-meta">25 de dezembro de 2019 publicado por <a href="#">Vitor</a></p>
<p th:text="${postagem.texto}"></p>
<form action="#" th:action="@{/blog}" th:object="${postagem}" method="post">
<button type="submit" class="btn btn-link" th:field="*{id}">Editar</button>
</form>
</div>
<!-- /.blog-post -->
</div>
我目前在 Java 中的方法:(PostagemController.java)
@PostMapping("/blog")
public String edit(Postagem postagem) {
for(Postagem post : postagens.findAll()) {
if(post.getId() == postagem.getId()) {
ModelAndView modelAndView = new ModelAndView("painel");
modelAndView.addObject("postagemEdit", post);
System.out.println("Id: " + post.getId());
System.out.println("Título: " + post.getTitulo());
System.out.println("Autor: " + post.getAutor());
System.out.println("Texto: " + post.getTexto());
break;
}
}
return "redirect:/painel";
}
我在“painel.html”上的当前代码是我想要设置信息的表单
<form method="post" th:object="${postagemEdit}" th:action="@{/painel}" style="margin: 20px 0">
<div class="form-group">
<input type="text" class="form-control" placeholder="Título" th:field="*{titulo}" /> <br>
<input type="text" class="form-control" placeholder="Spoiler do artigo" th:field="*{spoiler}" /><br>
<input type="text" class="form-control" placeholder="Autor" th:field="*{autor}" /> <br>
<textarea id="mytextarea" th:field="*{texto}"></textarea> <br>
<button type="submit" class="btn btn-primary">Publicar</button>
</div>
</form>
您似乎没有在 html 代码中为 id 指定值。 Java 中 int 的默认值为 0,这可能就是原因。 尝试使用 1 而不是 *{id}。
如果您正在从数据库中检索博客帖子 ID 和帖子内容,那么这个问题将得到解决。
未设置值
<form action="#" th:action="@{/blog}" th:object="${postagem}" method="post">
<input type="hidden" name="id" class="btn btn-link" th:value="*{id}" />
<button type=submit class="btn btn-link">Editar</button>
</form>
<form action="#" th:action="@{/blog}" th:object="${postagem}" method="post">
<button name="id" type=submit class="btn btn-link" th:value="*{id}">Editar</button>
</form>
function myFunction(id) {
var f = document.createElement("form")
f.style.display="none"
f.action="/action_page.php"
f.method="get"
var inp = document.createElement("input");
inp.value=id
inp.name="id"
f.appendChild(inp);
document.body.appendChild(f);
f.submit();
}
<button type=submit class="btn btn-link" th:data-id="*{id}" onclick='myFunction(this.getAttribute("data-id"))'>Editar</button>
以下是我在 html 模板中使用的工作代码来调用 java class ZC1C425268E68384F1AB4507C1479
<small th:text="${T(com.sample.util.UIclass).textContent(instr)}"> </small>
下面是 java class 的方法:
package com.sample.util;
import com.sample.models.Instr;
public class UIclass {
public static String textContent(Instr instr)
{
return "Hello";
}
}
如果您需要在 javascript 中访问相同的内容,则以下是代码
let d = [[${T(com.sample.UIclass).textContent(instr)}]];
console.log(d);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.