Я пытаюсь проверить форму входа. После нажатия кнопки входа элемент управления переходит к моему классу контроллера, и с помощью BindingResult я также узнал, что в моем поле есть ошибки, но я не могу показать ошибку на моей странице jsp. Я попытался метод rejectValue, но моя страница jsp выдает исключение, которое свойство не читается. E.t.cОшибка Spring mvc error not comng on jsp
Вот мой класс модели.
public class UserBean
{
@NotEmpty
private String username;
@NotEmpty
private String password;
public String getPassword()
{
return this.password;
}
public String getUsername()
{
return this.username;
}
public void setUsername(String username)
{
this.username = username;
}
public void setPassword(String password)
{
this.password = password;
}
}
Вот моя страница JSP.
<form:form method="POST" modelAttribute="login-entity"
action="process-login.html">
<table>
<tr>
<td><form:label path="username">username:</form:label></td>
<td><form:input path="username" /></td>
<td><form:errors path="username" /></td>
</tr>
<tr>
<td><form:label path="password">password:</form:label></td>
<td><form:input path="password" /></td>
<td><form:errors path="password" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Login" /></td>
</tr>
</table>
</form:form>
и вот мой класс контроллера.
@RequestMapping(value = "/process-login", method = RequestMethod.POST)
public ModelAndView processLogin(@Valid UserBean loginModel,BindingResult bindingResult, Model model)
{
if(bindingResult.hasErrors())
{
ModelAndView errorView = new ModelAndView("loginpage");
bindingResult.rejectValue("username","invalid username");
bindingResult.rejectValue("password","invalid password");
errorView.addObject("login-entity", bindingResult.getModel());
return errorView;
}
return new ModelAndView("redirect:/some_other_page","","");
}
После отладки мой последний объект представления ошибок содержит эту вещь.
ModelAndView: reference to view with name 'loginpage'; model is {login-entity={userBean=UserBean [userId=0, username=, password=], org.springframework.validation.BindingResult.userBean=org.springframework.validation.BeanPropertyBindingResult: 4 errors
Field error in object 'userBean' on field 'username': rejected value []; codes [NotEmpty.userBean.username,NotEmpty.username,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userBean.username,username]; arguments []; default message [username]]; default message [may not be empty]
Field error in object 'userBean' on field 'password': rejected value []; codes [NotEmpty.userBean.password,NotEmpty.password,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userBean.password,password]; arguments []; default message [password]]; default message [may not be empty]
Field error in object 'userBean' on field 'username': rejected value []; codes [invalid username.userBean.username,invalid username.username,invalid username.java.lang.String,invalid username]; arguments []; default message [null]
Может кому-то помочь? Я думаю, что мне не хватает какой-то очень фундаментальной вещи.
Спасибо за ответ, так что после того, как это делать, как я должен отправить ошибку обратно в JSP. Должен ли я использовать тот же метод BindingResult. –
На самом деле, нет, возможно, еще более важный момент, так как вы используете его, вы уничтожаете свою модель. Отредактированный ответ –