问题描述
我正在尝试使用 thymeleaf 学习更多 spring 框架,但现在我想在一个类中生成一个随机数,然后传递给 html 文件以将其打印出来。 我什至做得对吗? 所以我有一个类 numberController 来生成我的随机数:
public class numberController {
public int randomSkaicius() {
Random rand = new Random();
int skaicius = (int) (Math.random() * 50 + 1);
return skaicius;
}
}
这是我的 HTML 代码:
<div class="container">
<h5>Privaloma informacija</h5>
<div>
<form action="#" th:action="@{/home}" th:object="${galerija}" method="GET">
<label>Nuotraukos ID: + ${numberController.randomSkaicius}</label>
</form>
</div>
</div>
1楼
首先,您必须确保您的 Thymeleaf 模板位于正确的位置( src/main/resources/templates ),并记住其名称(例如my-page.html )。
下一步是你必须正确地告诉 Spring NumberController
实际上是一个控制器,通过使用@Controller
注释:
@Controller
public class NumberController {
public int randomSkaicius() {
Random rand = new Random();
int skaicius = (int) (Math.random() * 50 + 1);
return skaicius;
}
}
之后,您必须告诉 Spring 应该将哪个 URL 解析为特定的控制器方法,该方法返回一个模型 + 视图。
您可以通过使用@GetMapping
注释来做到这@GetMapping
,例如:
@Controller
public class NumberController {
@GetMapping("/my/page")
public ModelAndView getMyPage() {
// TODO: Implementation
}
public int randomSkaicius() {
Random rand = new Random();
int skaicius = (int) (Math.random() * 50 + 1);
return skaicius;
}
}
在这种情况下,我们告诉 Spring,只要有人请求 ,就会触发getMyPage()
方法。
在该方法中,我们必须返回一个ModelAndView
对象,它定义了一些东西:
-
视图的名称,在您的情况下,是 Thymeleaf 模板的名称,这意味着
my-page
(您必须删除扩展部分)。 -
模型的名称,您可以自由选择,例如
randomSkaicius
。 -
模型的实际值,即
randomSkaicius()
返回的值。
例如:
@Controller
public class NumberController {
@GetMapping("/my/page")
public ModelAndView getMyPage() {
return new ModelAndView("my-page", "randomSkaicius", randomSkaicius());
}
public int randomSkaicius() {
Random rand = new Random();
int skaicius = (int) (Math.random() * 50 + 1);
return skaicius;
}
}
既然你已经定义了这个,你必须回到你的 Thymeleaf 模板,无论你想在哪里使用这个模型,你都必须正确引用它。
我们在控制器"randomSkaicius"
其命名为"randomSkaicius"
,因此我们可以在我们的 Thymeleaf 模板中放置如下内容:
<span th:text="${randomSkaicius}"></span>
我们使用th:text
告诉 Thymeleaf 将该部分解析为该元素的内部文本。
然后我们使用${randomSkaicius}
来引用我们之前在控制器中定义的模型。