我有一个显示,编辑和删除帐户的应用程序。
displayAccounts.jsp
并由/accounts
url editAccount.jsp
并由/accounts/{id}/edit
调用,其中id
是要修改的帐户的主键。@RequestMapping
方法,并由/accounts/{id}/delete
成功时,每个操作都会重定向到“显示”页面。
成功执行操作(编辑/删除)后,我想发送可在“显示”页面上显示的成功消息。我怎样才能做到这一点?
由于我没有删除操作的视图,我也希望在显示页面中显示错误。
请帮忙。提前谢谢。
答案 0 :(得分:8)
使用RedirectAttributes
是您实现这一目标所需要的。我假设从EDIT和DELETE操作的POST方法中,您使用“redirect:”通过其控制器重定向到DISPLAY视图。
要实现此目的,您需要将RedirectAttributes attributes
作为控制器功能中的参数。然后在return语句之前添加以下代码行。
attributes.addFlashAttribute("successMsg", "Account Edit/Delete successfully");
或
attributes.addFlashAttribute("errorMsg", "Edit/Delete account is unsuccessful");
如果出现错误消息。
然后在 displayAccounts.jsp 页面上,您只需显示包含${successMsg}
或${errorMsg}
一旦显示消息,如果刷新页面,则消息将不会出现。它只会向用户显示一次。
这非常适合您的场景。即使我使用它。
希望这会对你有所帮助。欢呼声。
答案 1 :(得分:1)
在这种情况下,您可以使用 AJAX 。使用此功能,您可以将操作从同一页面发送到控制器以进行删除操作,并从同一页面上的控制器获取消息,以显示控制器删除操作的成功/错误消息。
答案 2 :(得分:1)
如果您的 EDIT 操作打开了不同的视图,那么您可以使用以下
将消息从Controller传递到视图ModelAndView mav = new ModelAndView();
然后将消息对象设置为
mav.addObject("message", "EDIT sucessfully completed");
最后,设置视图名称
mav.setViewName("views/afterEditOperation/");
您可以直接在视图中将消息用作 $ {mesasage}
答案 3 :(得分:1)
如果你想从控制器传递一些消息(错误/成功)到显示页面,而不是代码帮助,
@Controller
@RequestMapping("/controllerPath")
public class editDeleteController {
@RequestMapping(method = RequestMethod.GET)
public String methodName(ModelMap model) {
model.addAttribute("message", "Message1");
model.addAttribute("moremessage", "Message2");
return "viewName";//veiwName here in your case it is displayPage
}
}
在显示页面中,您将获得它,
<h1>Message : ${message}</h1>
详细说明这是否适合您。
谢谢
好吧,我认为我的观点是这样做的,
@RequestMapping(method = RequestMethod.GET)
public String editDelete(ModelMap model) {
if(success)
{
model.addAttribute("result", "Success");
return new ModelAndView("redirect:/displaytagView");//Chaining your controller so it will refresh your Accounts
}else{
model.addAttribute("result", "Error");
return "displayPage";
}
}
将控制器链接到displayPage Controller,以便显示刷新的数据。试试这个希望它的工作
答案 4 :(得分:1)
Spring提供ModelMap类型对象,可以将您的数据放在ModelMap类型对象中。该对象可以在整个应用程序中访问。在这里,您可以放置一个String类型变量,其值为Success或Failure(基于条件)。稍后您可以从jsp页面访问此模型对象。这是示例。
@RequestMapping(value="/accounts/{id}/edit ")
// public String yourMethod(ModelMap model)
public String yourMethod(HttpServletRequest request,
HttpServletResponse response,ModelMap model){
if(someCondition){
String result = "Success";
model.addAttribute("result", result);
}
else{
String result="failure";
model.addAttribute("result", result);
}
// return "displayAccounts";
return new YourControllerClass().yourMethodforAccountDisplay(request, response,model);//this is where you specify account display method with appropriate argument
}
您可以从jsp页面访问结果,如下所示 -
${result}
请在Spring配置文件中启用viewresolver。
答案 5 :(得分:1)
在编辑和删除方法的Controller方法中,将消息字符串写入模型
修改
model.addAttribute("message", "Record Edited Sucessfully");
model.addAttribute("accountList", accountList);
删除
model.addAttribute("accountList", accountList);
model.addAttribute("message", "Record Deleted Sucessfully");
并在您的displayAccounts.jsp中编写代码以将此消息显示为
<div>
<span>${message}</span>
</div>