如果在jsp中删除记录失败,则显示错误消息

Posted

技术标签:

【中文标题】如果在jsp中删除记录失败,则显示错误消息【英文标题】:Show error msg if record is failed to be deleted in jsp 【发布时间】:2015-03-14 22:59:09 【问题描述】:

我正在开发基于 Web 的应用程序,如果用户认为不需要维护,我需要删除父条目。 如果父条目在子表中没有任何记录,则条目将被删除,但如果它在子表中有记录,那么我想显示错误消息,条目存在于哪个表中。

我正在关注使用 jsp 和 servlet 的 MVC 架构。

【问题讨论】:

那么,您的问题是如何检测 servlet 中的错误并将其显示在 jsp 上? (确认一下,以便我给你一个正确的答案) 是的。我正在从 servlet 调用我的 java 类中的 delete 方法,并希望在 jsp 页面上显示错误消息 好的,那么您可以检测到您的servlet 上的删除问题。一旦检测到,有两个选项可以将错误发送到 jsp 页面。您可以使用用户会话发送它,或者,当您重定向到 jsp 页面时,您可以在 url 中发送一个属性,例如 www.my-app./jsppage?error=1。然后jsp页面获取属性并显示正确的错误信息。 感谢您的回答,这看起来很简单,但您能告诉我如何检测我的 servlet 中的问题吗? 【参考方案1】:

请注意以下内容,如果您的表定义明确,我的意思是,子记录必须引用父记录(阅读 FOREIGN KEY)。然后,如果您尝试删除父记录,您有很多选择:

1-您可以允许默认模式:您不能删除父级而不先删除子级(我认为这是您想要的描述)。

2- 当你删除父母时,你可以对mysql“说”删除所有子记录。

有关此的更多信息,请阅读这篇文章:Foreign key constraints: When to use ON UPDATE and ON DELETE

假设您要遵循第一个选项,当您要删除父键时,可能会发生两件事。

1- 没有子记录,因此一切如您所愿。

2- 您有引用要删除的父记录的子记录。在这种情况下,mysql 不会删除父记录,并且会返回错误代码 1217(无法删除或更新父行:外键约束失败)。然后您可以检测到错误。并做你假装用它做的事情,在这种情况下,向客户端显示错误消息。为了显示消息,这是我在写这个答案之前发布的评论的副本:

一旦检测到,有两个选项,将错误发送到 jsp 页。您可以使用用户会话发送它,或者,当您 重定向到jsp页面,你可以在url中发送一个属性,比如 www.my-app./jsppage?error=1。然后jsp页面获取属性和 显示正确的错误信息。

【讨论】:

谢谢,但我的问题是如何检测 servlet 中的错误,因为 java 类本身抛出了异常。您说一旦检测到并给了我选项,但实际上我不知道如何在 Servlet 中检测到这一点 需要捕获SQLException并获取错误码

以上是关于如果在jsp中删除记录失败,则显示错误消息的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate 删除记录惨遭失败

如果分支不存在,如何删除没有错误消息的分支?

我想在另一个表上备份已删除的记录

在Laravel中创建,更新或删除记录时识别sql错误的最佳方法

如果用户从表中删除记录,则刷新 Access 表单文本框

如果表的记录少于 n 则删除表