如果您可以解决用户的删除问题,那么似乎可以。如果用户无能为力,那么错误代码状态可能会更正确。我可以想象的唯一的删除失败是授权失败,它是401。可以通过向您的方法“
HttpServletResponse response”添加参数来设置此失败。您的代码将变为:
@RequestMapping(value = "items/{id}", method = RequestMethod.DELETE)public String delete(@PathVariable("id") int itemId, Model model, HttpServletReponse response) { Item item = itemDao.get(id); // true -> can delete // false -> cannot delete, f.e. is FK reference somewhere boolean wasOk = itemDao.delete(item); if (!wasOk) { // will write to user which item couldn't be deleted response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); model.addAttribute("item", item); return "items/error"; } return "redirect:/items";}您可以适当地替换其他状态代码,但这是一般性的想法。
您还可以执行以下操作:
if (!wasOk) { throw new DataAccessException("Unable to delete item: " + item); }然后在同一个类中有一个带注释的错误处理程序
@ExceptionHandler(DataAccessException.class)@ResponseStatus(HttpStatus.BAD_REQUEST)public String handleDataAccessException(DataAccessException ex) { // Do some stuff return "errorView";}


