java - 如何通过@GetMapping 正确访问 URL?
问题描述
我目前正在使用 nginx-reverse 代理开发 Docker 部署的 Spring 应用程序,并希望通过@GetMapping
&访问子域@PostMapping
。
访问/entity/add
子域的正确方法是什么?
这是代码错误还是我的服务器配置错误?为了正确审查这个问题,还需要其他什么吗?我很乐意添加它。
我查看了官方文档、指南、其他 StackOverflow 帖子等,但它们似乎都不起作用。
控制器.java:
public class EntityController {
private Repository repository;
@ModelAttribute("entity")
public Entity newEntity() {
return new Entity();
}
// Overview.
@GetMapping("/entity")
public String index(Model model) {
final Iterable<Entity> all = repository.findAll();
model.addAttribute("all", all);
return "index";
}
// New entity.
@GetMapping("/entity/add")
public String loadAddPage(Model model) {
model.addAttribute("entity", new Entity());
return "add";
}
@PostMapping("/entity/add")
public String submitEntity(@Valid @ModelAttribute Entity entity, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return "add";
}
repository.save(entity);
return "redirect:/index";
}
索引.html:
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
<title>Overview</title>
<meta charset="UTF-8" />
</head>
<body>
<div class="container">
<h2>Entities</h2>
<form action="/entity/add" method="get">
<input type="submit" value="New Entity"/>
</form>
<div class="content" th:each="entity: ${all}">
<h2 th:text="${entity.name}">Name</h2>
<form th:href="@{/entity/details?id={entityId}(entityId=${entity.id})}">
<input type="submit" value="Edit"/>
</form>
<!--<button><a th:href="@{/entity/update?entityId={entityId}(entityId=${entity.id})}"></a></button>-->
</div>
</div>
</body>
</html>
添加.hmtl:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<title>New entity</title>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8" />
</head>
<body>
<div class="container">
<form action="/entity/add" method="post" th:object="${entity}">
<table>
<tr>
<td><label for="name">Name</label></td>
<td><input id="name" type="text" th:text="Name" th:field="*{name}" /></td>
</tr>
</table>
</form>
</div>
</body>
</html>
我希望单击/entity/add
-form inindex.html
正确地将我链接到entity/add
,但它只显示 404 错误。与其他测试的子域相同。
编辑 01:标题已更新。(访问子域 -> 访问 URL)
解决方案
我理解您的问题,因为您需要使用 POST 方法将表单提交到此操作 url“/entity/add”。考虑使用 Thymeleaf 视图模板来呈现服务器端操作。检查以下内容
- 将 HTML 操作属性更改为
th:action
属性。 - 提供提交操作按钮以提交表单。
检查此网址以获取更多信息:https ://spring.io/guides/gs/handling-form-submission/
免责声明:这是我对您的问题的评论。由于我没有声誉,因此我将其发布为答案。
推荐阅读
- php - Codeigniter - 未收到电子邮件
- swift - 希腊字符函数(为了好玩)
- python - python 绘图和图像查看库,具有等效的 MATLAB 数据提示
- multithreading - 同时使用 pyaudio 和语音识别
- simulation - 如何使用 Anylogic 在仓库操作中为拣货流程创建订单
- python-3.x - 为什么用户操作无法访问 tkinter Entry 小部件
- c# - 无法加载工具箱项目。它将从工具箱中删除,有什么方法可以解决它?
- node.js - 使用 npm 时 package-lock.json 中的重复模块?
- c - 将正弦波流式传输到 XAudio2
- wpf - 用于文本编辑的 MahApps 图标