Neither BindingResult nor plain target object for bean name 'userProfile' available as request attribute
12,235
Solution 1
I wasn't noticed that I have to implement method for form creation which will provide instance of UserProfile. I've added 2 methods and now everything works fine.
@RequestMapping("/")
public String home() {
return "redirect:/index";
}
@RequestMapping(value = "/index", method = RequestMethod.GET)
public String createRegisterForm(Map<String, Object> model){
model.put("userprofile", new UserProfile());
return "index";
}
Solution 2
Add modelAttribute="userProfile"
to the <form:form>
tag.
<form:form method="post" action="add" commandName="userProfile" modelAttribute="userProfile">
Author by
Fedor Skrynnikov
Trying to design and implement My Life program but can't find the test cases and spec :)
Updated on June 04, 2022Comments
-
Fedor Skrynnikov almost 2 years
I've encountered the folowing exception while I was trying to implement my first spring+hibernate web app:
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'userProfile' available as request attribute at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:141) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:174) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:194) at org.springframework.web.servlet.tags.form.LabelTag.autogenerateFor(LabelTag.java:129) ...
UserController.java:
@Controller public class UserController { @Autowired private UserProfileService userProfileService; public UserController(){ } @RequestMapping(value="/add", method=RequestMethod.POST) public String registerUser(@ModelAttribute("userProfile") UserProfile userProfile, BindingResult result, Map model){ userProfileService.addUserProfile(userProfile); return "redirect:/login"; } ... }
UserProfile.java
@Entity @Table(name="USER_PROFILE") public class UserProfile { @Id @GeneratedValue @Column(name = "ID") private Long id; @Column(name = "USERNAME") private String userName; @Column(name = "PASSWORD") private String password; //sets and gets }
index.jsp
<form:form method="post" action="add" commandName="userProfile"> <table> <tr> <td><form:label path="userName"><spring:message code="label.username" /></form:label></td> <td><form:input path="userName" /></td> </tr> <tr> <td><form:label path="password"><spring:message code="label.password" /></form:label></td> <td><form:password path="password" /></td> </tr> <tr> <td><input type="submit" value="<spring:message code="label.adduser" />"></td> </tr> </table> </form:form>