Spring MVC:如何重定向到有错误的页面?
我试图让我的控制器重定向到一个自定义错误消息的页面:
@RequestMapping(method=RequestMethod.POST) public String processSubmit(@Valid Voter voter, BindingResult result, HttpServletRequest request) { if (result.hasErrors()) { logger.info("RegisterController encountered form errors "); return "registerPage"; } if (service.isVoterRegistered(voter.getVoterID())) { logger.info("VoterID exists"); request.setAttribute("firstName", voter.getFirstName()); request.setAttribute("lastName", voter.getLastName()); request.setAttribute("ssn", voter.getSsn()); return "forward:/question"; }else { logger.info("RegisterController is redirecting because it voter info failed to authenticate"); //TODO: should re-direct to register page with error return "redirect:registerPage"; } } }
Voter Registration
在重定向到register.jsp页面时,我希望页面显示错误消息,表示选民没有注册。 我的问题是如何让Controller返回页面,好像表单有一个validation错误(即result.hasErrors()== true)。
提前致谢
您可以在jsp中添加以下部分 –
${err.defaultMessage}
这里c
只不过是 –
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
你还需要将错误传递给模型,并在控制器方法的if块中查看这样的内容 –
model.addAttribute("errors",result.getFieldErrors());
DIV中的error
类只不过是我的自定义css显示为红色块 –
.error{ color: red; border:2px solid red; padding:10px; }
你也可以看看这个
希望我的回答能帮到你..
控制器方法有问题。 从getFieldErrors()
调用getAllErrors()
方法是更好的方法。 当然如果结果是BindingResult
类型。 喜欢这个:
model.addAttribute("errors", result.getAllErrors());