Reputation: 1852
In Spring MVC I have the following controller:
@RequestMapping(value="adminUsers", method = RequestMethod.POST)
public ModelAndView listAdminUsers(Person newPerson, HttpServletResponse response) throws Exception {
Person person = personService.findPerson(newPerson.getUsername());
if (person == null) {
// Set errorText = "Invalid Person";
// redisplay view
ModelAndView mav = new ModelAndView("adminUsersList");
return mav;
} else {
Roles roles = new Roles();
roles.setPersonCode(person.getPersonCode());
roles.setRoleType("ADMN");
rolesMapper.insert(roles);
return new ModelAndView("redirect:/admin/adminUsers.html");
}
}
With the view:
<form:form method="post" action="${action}" commandName="person" >
<form:label path="username">Add new administrator:</form:label>
<form:input path="username" size="20"/>
<form:errors path="username" />
<input type="submit" value="Submit Changes"/> </form:form>
How would I return an error back to the view, so it is displayed by the <form:errors path="username" />
tag?
This is simlar to How to return error status and validation errors from this Spring MVC controller? except I'm returning a webpage, not a REST object, so the answers there don't apply.
I don't want to use Validator
because the above calls the database, it's not simply a check for if username is not empty etc.
Thanks!
Upvotes: 0
Views: 15791
Reputation: 1225
You need to change your method logic:
if (result.hasErrors){ return ""; } else { creating your person object logic goes here! }
Upvotes: 0
Reputation: 5133
Add BindingResult
to your method signature. From there, bindingResult.rejectValue("username", "username.notvalid", "Username is not valid");
Upvotes: 2
Reputation: 1852
BrandonV had it. My Controller now looks like:
// Create a new item
@RequestMapping(value="adminUsers", method = RequestMethod.POST)
public ModelAndView listAdminUsers(Person newPerson, BindingResult result, HttpServletResponse response) throws Exception {
Person person = personService.findPerson(newPerson.getUsername());
if (person == null) {
result.rejectValue("username","username.notvalid","Username doesn't exist");
ModelAndView mav = new ModelAndView("adminUsersList"); //This is ugly, it's copy & pasted from above
mav.addObject("adminUsersList", adminService.findAllAdminUsers()); //Ugly...
return mav;
} else {
Roles roles = new Roles();
roles.setPersonCode(person.getPersonCode());
roles.setRoleType("ADMN");
rolesMapper.insert(roles);
return new ModelAndView("redirect:/admin/adminUsers.html");
}
}
Upvotes: 0