使用 BindingResult 在 JSP 上显示错误消息
Posted
技术标签:
【中文标题】使用 BindingResult 在 JSP 上显示错误消息【英文标题】:Showing error message on JSP using BindingResult 【发布时间】:2014-12-30 21:26:36 【问题描述】:我是 Spring 新手。 我正在尝试使用 BindingResult 在 jsp 上显示错误用户和密码的错误消息。但是没有显示错误消息。
请在下面的代码中提出我的错误。
JSP
<script type="text/javascript">
function loginUser()
$('#loginForm').submit();
</script>
</head>
<body>
<form:form action="login.test" id="loginForm" commandName="loginForm" method="POST">
<div class="brand_area"></div>
<div class="content_area">
<table style="top: 360px; position: relative; margin-left: 333px;">
<tr id="uNameID">
<td class="label">User Name:</td>
<td><form:input id="userNameID" path="userName" class="textInput" /></td>
<td><form:errors path="userName" class="error"/></td>
</tr>
<tr id="pID">
<td class="label">Password:</td>
<td><form:password id="passwordID" path="password" class="textInput" /></td>
<td><form:errors path="password" class="error"/></td>
</tr>
<tr>
<td></td>
<td><span id="saveButton" class="loginButton"
onclick="loginUser()"> <span>Login</span>
</span></td>
</tr>
</table>
</div>
</form:form>
控制器
@RequestMapping(value = "login.test", method = RequestMethod.POST)
public String processForm( LoginForm loginForm, BindingResult result, ModelMap model, HttpSession session) throws SQLException
String resultedPage;
model.addAttribute("l_nodes", reportService.getAllLiveNodes());
model.addAttribute("s_nodes", reportService.getAllStaticReportNodes());
User user = userService.getUserByName( loginForm.getUserName() );
if( user != null )
session.setAttribute("userID", user.getUserID());
if( loginForm.getPassword().equals( user.getPassword() ) )
resultedPage = "home/userHome";
else
result.rejectValue( "password", "login.passwordNotValid");
resultedPage = "redirect:login.test";
else
result.rejectValue( "userName", "login.userNotValid");
resultedPage = "redirect:login.test";
return resultedPage;
谢谢
【问题讨论】:
【参考方案1】:万一其他人研究相同... 将 hasBindErrors 标记添加到您的 JSP:
<spring:hasBindErrors name="loginForm">
<c:forEach var="error" items="$errors.allErrors">
<b><spring:message message="$error" /></b>
<br/>
</c:forEach>
</spring:hasBindErrors>
【讨论】:
【参考方案2】:好吧,我通常使用 Model 对象发回值。
这个answer 可能对你有帮助。
【讨论】:
以上是关于使用 BindingResult 在 JSP 上显示错误消息的主要内容,如果未能解决你的问题,请参考以下文章
在 Spring Boot 应用程序中使用 @Valid 和 BindingResult 时的表单输入验证问题
使用@Valid+BindingResult进行controller参数校验