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

Voter Fields

First Name :


Last Name :


Social Security Number :



在重定向到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());