gpt4 book ai didi

spring - 如何使用 Spring MVC 和注释删除记录

转载 作者:行者123 更新时间:2023-12-02 09:02:06 25 4
gpt4 key购买 nike

我对 Spring 比较陌生,我正在努力完成以下任务:

假设我的数据库表中有一个水果列表,其中包含 2 列“id”和“name”。我想要一个显示列表的页面,并在每个水果旁边有一个“删除”按钮。我认为这很容易完成,但我无法弄清楚,也找不到任何解释这一点的教程。

这就是我现在所拥有的:

查看:

<c:forEach items="${fruits}" var="fruit">
<tr>
<td><c:out value="${fruit.name}" /></td>
<sec:authorize access="hasRole('admin')">
<td>
<a href="<c:url var="deleteUrl" value="/fruit/remove.html"/>">DELETE</a>
<form id="${fruitFormId}" method="POST">
<input id="fruit" name="fruit" type="hidden" value="${fruit.id}"/>
</form>
</td>
</sec:authorize>
</tr>
</c:forEach>

然后是 Controller :

@Controller
public class FruitController{

@Autowired
private FruitManager fruitManager;

@RequestMapping(value = "/list", method = RequestMethod.GET)
public String getFruits(ModelMap model) {
model.addAttribute("fruits", this.fruitManager.getFruits());
return "list";
}

@RequestMapping(value = "/fruit/remove", method = RequestMethod.POST)
public String removeAd(Fruit fruit) {
fruitManager.removeFruit(fruit);
return "/list";
}

我什至不确定我现在是否使用“良好且干净”的方式,并且希望以“正确的方式”完成此操作,并遵循约定(如果有)。

最佳答案

您的代码是正确的,除了两个小问题: - 您不会收到fruit,而是收到fruitId。 - 您需要一个带有发送按钮而不是链接的 HTML 表单

所以你需要稍微纠正一下你的 Controller 。

@RequestMapping(value = "/fruit/remove", method = RequestMethod.POST)
public String removeAd(@RequestParam("fruit") long fruitId) {
Fruit fruit = fruitManager.loadById(fruitId);
fruitManager.removeFruit(fruit);
//or
fruitManager.removeFruitById(fruitId);
return "redirct:/list";
}

那么我建议在 POST 后重定向(而不是直接返回列表页面),这样如果用户在删除水果后按下浏览器刷新按钮,就不会出现问题。

对于 HTML 内容,您不需要任何 JQuery 或 JavaScript,除非您需要一些删除确认消息。

<c:url var="deleteUrl" value="/fruit/remove.html"/>    
<form id="${fruitFormId}" action="${deleteUrl}" method="POST">
<input id="fruit" name="fruit" type="hidden" value="${fruit.id}"/>
<input type="submit" value="delete" onClick="return confirm('sure?')"/>
</form>

关于spring - 如何使用 Spring MVC 和注释删除记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13106232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com