所以我尝试从ExceptionHandler wit model属性重定向到导致它的网站。
例如,我有一个控制器方法,列出当前项目:
@AvailableInMenu
@RequestMapping(method = RequestMethod.GET)
public String list(Model model) {
model.addAttribute("Companys", iCompanyService.findAll().getData());
return "masters/crud/company/list";
}
这是方法调用的模板:
<div th:if="${exception != null}" class="alert alert-warning alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
<strong>Warning!</strong><div th:text="${exception}" th:remove="tag" ></div>
</div>
<div class="ibox float-e-margins">
<div class="ibox-content">
<table id="table" class="table table-striped table-bordered nowrap">
<thead>
<tr>
<th th:text="#{app.maintanance.installversion}"></th>
</tr>
</thead>
<tbody>
<tr th:each="company : ${Companys}">
<td th:text="${company.installversion}"></td>
<td>
<a class="delete-button" th:attr="data-redir=@{/company/delete/{id}(id = ${company.id})}">
<i class="fa fa-pencil"></i>
</a>
</td>
</tr>
</tbody>
</table>
</div>
</div>
此百万美元代码生成一个包含数据和删除链接的表。用户使用的实体wotch具有外键,如果用户想要删除它,jpa会产生一个外键约束,我将其包装到错误包装器中。
这是删除链接的控制器方法:
@RequestMapping(value = {"/delete/{id}"}, method = RequestMethod.GET)
public String deleteCompany(Model model, @PathVariable("id") Long id) {
ErrorWrapper<Boolean> result = iCompanyService.deleteCompany(id);
if(result.hasError()){
if(result.getConstraint()){
throw new GlobalModelException(601L, "redirect:/company");
}
}
return "redirect:/company";
}
你可以看到是否有错误我抛出了我创建的一般异常,而一个带有ExpectonHandler的ControllerAdvice在哪里捕获我的预期类。我想将异常添加到模型并重定向回列表站点,并向站点上显示引导警报。 这是来自ControllerAdvice的exceptionHandler
@ExceptionHandler(GlobalModelException.class)
public ModelAndView handlingException(GlobalModelException exception) {
ModelAndView model = new ModelAndView();
model.setViewName(exception.getUrl());
model.addObject("exception", exception);
return model;
}
ModelAndView将应用程序重定向到正确的位置,但重定向后异常为null。如何使用ControllerADvice在模型中调用我的列表网站。我还有许多其他的例外情况,我想要处理这个例子以及其他很多我需要的控制器。
有没有办法做到这一点?
答案 0 :(得分:0)
您可以使用RedirectAttributes / FlashAttribute。
http://viralpatel.net/blogs/spring-mvc-flash-attribute-example/