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



我对春季是相对较新的,我正在尝试完成以下操作:

假设我在数据库表中有一个带有2列" ID"one_answers"名称"的水果列表。我想为显示列表显示一个页面,并在每个水果旁边有一个"删除"按钮。我认为这很容易完成,但我无法弄清楚,找不到任何解释的教程。

这就是我现在拥有的:

查看:

<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
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表单,而不是链接

因此您需要纠正控制器。

@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";
}

然后,我建议在发布后重定向(而不是直接返回列表页面),因此,如果用户删除水果后用户按下浏览器refersh按钮,您将不会遇到问题。

对于您不需要任何jQuery或JavaScript的HTML东西,除了您需要删除确认消息。

<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>

这很容易,好友。您只需将Ajax函数绑定到带有jQuery或其他内容的删除按钮上,但是首先我想确认您的项目可以在Tomcat中运行良好。我在您的代码中发现的一个问题是该方法去除(水果)。您可以通过HTTP通过对象水果,只需获得水果的ID即可。更改删除的方法(字符串ID)。在方法中,您可以使用reqest.getParameter()获取值。这是我建议的教程:http://www.ibm.com/developererworks/web/library/wa-spring3/index.html。

最新更新