Thymeleaf - 如何从静态html页面调用模板html页
我正在开发一个使用Thymeleaf作为视图技术的Spring启动应用程序。我在src/main/resources/templates文件夹中有一个html页面dashboard.html,它是从控制器内部调用的。Thymeleaf - 如何从静态html页面调用模板html页
@PostMapping("https://stackoverflow.com/users/register")
public String registerUser(@Validated @ModelAttribute User user, Model model) {
User registeredUser = usersDAO.registerUser(user);
if (registeredUser == null) {
return "500error";
}
model.addAttribute("name", user.getName());
model.addAttribute("username", user.getUsername());
model.addAttribute("emailId", user.getEmailId());
return "dashboard";
}
我static
文件夹内的一些静态HTML文件。我想从静态html文件中调用dashboard.html
,比如使用锚定标记<a/>
。如何才能做到这一点?
当我的应用程序在本地运行时,我无法直接链接到此文件。例如:localhost:8080/templates/dashboard.html
将不起作用。
您应该为您的thymeleaf
html模板创建一个控制器。例如:
@Controller
@RequestMapping("/templates")
public class DashboardController {
@GetMapping("/dashboard")
public ModelAndView dashboard() {
DashboardModel dashboardModel = new DashboardModel();
return new ModelAndView("dashboard", "dashboard", dashboardModel);
}
}
然后你就可以链接到http://localhost:8080/templates/dashboard
,让你的dashboard.html页。
当然,您可以根据需要更改@RequestMapping("/templates")
和@GetMapping("/dashboard")
以控制网址。
请注意,你不需要在控制器的@ RequestMapping中使用'/ templates',这可以是你喜欢的任何东西,它仍然可以工作。 –
@WimDeblauwe,当然:)我使用'/ templates/dashboard',因为他提到的url模式是一个例子。和你一起编辑我的回答。 – Tom
这里不是真的你的问题,但重要的是:在用户为'null'的情况下,你不应该只显示一个正确的错误页面,而是确保使用正确的HTTP代码。使用当前的代码,您仍然会返回200 OK。最简单的方法是抛出一个用'@ ResponseStatus'注释的异常。 –
src/main/resources不是存储html页面的好地方 –
@Gurkanİlleez如果您在Thymeleaf启动器中使用Spring Boot,src/main/resources/templates是默认位置。我同意在'static'子目录中有一些html页面是很奇怪的。大多数情况下,这用于CSS,JS和/或图像文件。 –