【发布时间】:2020-07-22 20:33:58
【问题描述】:
我想显示我从搜索中获得的数据,并根据我的喜好进行个性化设置。此时,它只是纯文本。
例如,我正在搜索“泰坦尼克号”,我从 IMDB 获得了名称、一些链接和一些信息。
我有以下代码:
search.html
<!DOCTYPE HTML>
<html xmlns:th="https://www.thymeleaf.org">
<head>
<title>Getting Started: Handling Form Submission</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>Form</h1>
<form action="#" th:action="@{/search}" th:object="${search}" method="post">
<p>Message: <input type="text" th:field="*{content}" /></p>
<p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
</form>
</body>
</html>
result.html
<!DOCTYPE HTML>
<html xmlns:th="https://www.thymeleaf.org">
<head>
<title>Getting Started: Handling Form Submission</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>Result</h1>
<p th:text="'content: ' + ${main.content}"></p>
<a href="/search">Submit another message</a>
</body>
</html>
SearchController.java
@Controller
public class SearchController {
@GetMapping("/search")
public String greetingForm(Model model) {
model.addAttribute("search", new Main());
model.addAttribute("main", new Main().getContent());
return "search";
}
@PostMapping("/search")
public String greetingSubmit(@ModelAttribute Main main) {
return "result";
}
}
和Main.java
private String content;
private List<Result> finalList;
private List<Result> resultList;
public void setContent(String content) throws IOException {
//code to compute finalList
}
public List<Result> getContent() {
return this.finalList;
}
主要问题是我不知道该去哪里。 finalList 是“Result”类型的对象列表,其字段包括
private List<String> link = new ArrayList<>();
private String name;
private TitleProp titleProp;
并且TitleProp有
private String trailer;
private String rating;
private String description;
private String genre;
我想操纵每个字段以不同的方式显示它,例如具有更多行的表格等。 任何链接或代码示例都会帮助我更多地了解 Thymeleaf 和 Spring Boot。
【问题讨论】:
-
您将需要在您的一个控制器中公开几个 REST API 端点,然后从您的前端使用 Javascript 调用它们以对您的 API 进行 Ajax 调用。一旦你有了一个响应数据对象,你就可以使用更多的 Javascript 以任何你认为合适的方式将数据注入到你的 DOM 中。所有这一切,调用、响应和内容注入都可以在不刷新页面的情况下完成。
-
所以你的意思是,在我搜索信息并填充“finalList”之后,我可以公开一些端点,例如“getName”、“getId”等。(使用“GetMapping” ),我可以通过使用 Ajax 调用来访问这些?
-
差不多。这里有一些很棒的教程:spring.io/guides/gs/consuming-rest-jquery 和 mkyong.com/spring-boot/spring-boot-ajax-example - 它们都是 SpringBoot 教程,但如果您只使用原始 Spring 和 Thymeleaf,您可以稍微调整它们以满足您的需求。
-
感谢您的链接,@SnakeDoc。我设法通过在这段时间尽可能多地学习 JavaScript 和 ajax 来解决这个问题。我发布了一个答案:)。