Java SpringMVC:如何重定向到有错误的页面?
我试图使我的控制器重定向到带有自定义错误消息的页面:Java SpringMVC:如何重定向到有错误的页面?,java,spring,jsp,spring-mvc,Java,Spring,Jsp,Spring Mvc,我试图使我的控制器重定向到带有自定义错误消息的页面: @RequestMapping(method=RequestMethod.POST) public String processSubmit(@Valid Voter voter, BindingResult result, HttpServletRequest request) { if (result.hasErrors()) { logger.info("RegisterContr
@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";
}
}
}
选民登记
选民区
名字:
姓氏:
社会保险号码:
在重定向到register.jsp页面时,我希望该页面显示一条错误消息,说明投票者未注册。我的问题是如何让控制器返回页面,就好像表单有验证错误一样(即result.hasErrors()==true)
提前感谢您可以在jsp中添加以下部分-- 此外,您还需要将错误传递到模型中,并在控制器方法的if块中像这样查看--
error
类在DIV中只是我的自定义css,显示为红色块--
你也可以看看
希望我的回答对您有所帮助。您的控制器方法有问题。从结果调用
getAllErrors()
方法比调用getFieldErrors()
方法更好。当然,如果结果是BindingResult
type。像这样:
model.addAttribute(“errors”,result.getAllErrors())代码>
<!-- registerPage.jsp -->
<div class="container">
<h1>
Voter Registration
</h1>
<div class="span-12 last">
<form:form modelAttribute="voter" method="post">
<fieldset>
<legend>Voter Fields</legend>
<p>
<form:label for="firstName" path="firstName" cssErrorClass="error">First Name : </form:label></br>
<form:input path="firstName" /><form:errors path="firstName"/>
</p>
<p>
<form:label for="lastName" path="lastName" cssErrorClass="error">Last Name : </form:label> </br>
<form:input path="lastName" /> <form:errors path="lastName" />
</p>
<p>
<form:label for="ssn" path="ssn" cssErrorClass="error">Social Security Number : </form:label> </br>
<form:input path="ssn" /> <form:errors path="ssn" />
</p>
<p>
<input type="submit"/>
</p>
</fieldset>
</form:form>
</div>
<hr>
</div>
<c:choose>
<c:when test="${not empty errors}">
<div class="error">
<c:forEach items="${errors}" var="err">
${err.defaultMessage}
<br/>
</c:forEach>
</div>
</c:when>
</c:choose>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
model.addAttribute("errors",result.getFieldErrors());
.error{
color: red;
border:2px solid red;
padding:10px;
}