我有一个网络应用程序的问题。我是一名学生,还在学习。这是一个简单的论坛,登录,注册,添加新主题和帖子。也可以删除没有问题的主题Get映射方法。不幸的是,我得到了一个命令,以更改Get映射删除和更改后得到一个错误的内容的应用程序:
这就是主题。更改删除之前的html视图:
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Forum - Topic</title>
</head>
<body background="http://2.bp.blogspot.com/-BsL9gRE80Ug/U0OgeWbbxtI/AAAAAAAAF-w/teXrzw-TBcU/s1600/nacre-background-tile.jpg">
<table class="table table-striped">
<a href="http://localhost:8080/forum">Powrot</a>
<tr>
<th>Title: </th>
<th><p th:text="${topicName}" /></th>
</tr>
<tr>
<td th:text="${topicAuthor}" ></td>
<td th:text="${topicDate}" ></td>
<table border="1">
<td th:text="${topicContent}"></td>
</table>
</tr>
<table>
<br><b>-------------------------------------------------------</b></br>
<a th:href="@{/new_message(id=${topicId})}">Add new post</a>
<br><a th:href="@{/delete(id=${topicId})}">Delete this topic</a></br>
<br><b>-------------------------------------------------------</b></br>
</table>
</table>
<table class="table table-striped">
<tr th:each="message,iterStat : ${list}">
<td th:text="${message.author}"></td>
<td th:text="${message.date}"></td>
<table border="1">
<td th:text="${message.content}"></td>
</table>
<table>
<p> - - - - - - - - </p>
</table>
</tr>
</table>
</body>
</html>
更改后:
...
<table>
<br><b>-------------------------------------------------------</b></br>
<a th:href="@{/new_message(id=${topicId})}">Add new post</a>
<form action="#" th:action="@{/delete(id=${topicId})}" method="delete">
<br><a th:href="@{/delete(id=${topicId})}">Delete this topic</a></br>
</form>
<br><b>-------------------------------------------------------</b></br>
</table>
...
我还编辑了控制器。这是使用getMapping的早期工作版本:
@Controller public class TopicController
{
@Autowired
private TopicRepository topicRepository;
@Autowired
private MessageRepository messageRepository;
@Autowired
private UserRepository userRepository;
@GetMapping("/delete")
public String deleteTopic(@CookieValue(value = "userId", defaultValue = "-1") String userId,
@RequestParam("id") String topicId, Model model)
{
if(userId.equals("-1"))
{
model.addAttribute("user", new User());
return "login";
}
else
{
Topic topic = topicRepository.findByIdIn(Integer.parseInt(topicId));
if(topic.getUserId() == Integer.parseInt(userId))
{
topicRepository.delete(topic);
}
return "redirect:/forum";
}
}
}
而新版本则不起作用:
@RequestMapping(value = "/{delete}", method = RequestMethod.DELETE)
public @ResponseBody String deleteTopic(@CookieValue(value = "userId", defaultValue = "-1") String userId,
@RequestParam("id") String topicId, @ModelAttribute Topic topic, Model model)
{
if(userId.equals("-1"))
{
model.addAttribute("user", new User());
return "login";
}
else
{
Topic topicDB = topicRepository.findByIdIn(Integer.parseInt(topicId));
if(topicDB.getUserId() == Integer.parseInt(userId))
{
topicRepository.delete(topicDB);
}
return "redirect:/forum";
}
}
HTML表单中不支持DELETE
方法。因此,当您编写以下内容时,您的浏览器只使用普通的GET
。
<form action="#" th:action="@{/delete(id=${topicId})}" method="delete">
使用POST
方法,因为您更改了服务器上的数据。如果要使应用程序认为使用了DELETE
方法,请使用HiddenHttpMethodFilter和隐藏字段,如下所示:
<form action="#" th:action="@{/delete(id=${topicId})}" method="post">
<input type="hidden" name="_method" value="delete">
<br><a th:href="@{/delete(id=${topicId})}">Delete this topic</a></br>
</form>
如果你用胸腺Spring
<form action="#" th:action="@{/delete(id=${topicId})}" th:method="delete">
<br><a th:href="@{/delete(id=${topicId})}">Delete this topic</a></br>
</form>
您好,我正在尝试创建一个POST方法,但我一直收到“404 Request方法'GET'not support”错误。下面我将发布我的Rest控制器,下面我将发布我的服务类。唯一不起作用的是@PostMaps方法。 我没有看到这个问题,我尝试切换到@GetMapping并删除了实际的事务“billRepository.delete(billToWithdraw);”然后该方法返回正确的账单。
好吧,这是我在Stackoverflow上的第一个问题,所以我希望,我正在解释我的问题足够好:-) 我正在使用Spring Data Rest MongoDB。我使用了一些“神奇”的方法,这些方法可以通过实现MongoRepository来获得,但是我也使用了自定义实现和RestController。让我给你看一些代码: 我的仓库看起来像这样: 现在,我的前端是由好的老AngularJS制作的,它
日志将输出以下内容。 2017-10-10 14:49:40.946警告5750---[nio-8080-exec-4]O.s.web.servlet.PageNotFound:不支持请求方法“Get”
我刚刚从graphdb 8.4.1升级到graphdb 8.8.1,效果非常好。然而,我无法通过sparql访问triple store并获取更多的[WARN]2019-03-19 21:08:20090[http-nio-7200-exec-8 | o.s.w.s.PageNotFound]请求方法“GET”不受支持 我怎么才能打开它? 提前感谢!
控制器中有以下代码 以及我的jsp中的以下代码。 当用户从cJobNms列表中选择选项时,所选值应显示在控制器方法showTestXsd中。请让我知道我做错了什么。 目前我收到一条消息:不支持请求方法“GET”
我正在处理一个java springboot项目和rest api,我需要在其中一个uri中传递参数,当我使用它时,我会遇到“request method GET not supported”错误 当我使用时它工作正常 但我需要url有“?”在传递参数之前,所以当我替换 用这个 我得到get方法不受支持的错误。