While trying to use Spring MVC form Tags, I come across following exception
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'userInput' available as request attribute
Below is my JSP Code with Spring Tags
<%@page contentType="text/html" pageEncoding="UTF-8" session="false" %>
<%@taglib uri="http://www.springframework.org/tags" prefix="st"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="sf"%>
<!DOCTYPE html>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>About Us Page</title>
<st:url var="bootstrapp_theme" value="/resources/css/bootstrap-theme.css" />
<st:url var="bootstrapp_css" value="/resources/css/bootstrap.css" />
<st:url var="jquery" value="/resources/js/jquery-2.2.0.js" />
<st:url var="bootstrapp_js" value="/resources/js/bootstrap.js" />
<link href="${bootstrapp_theme}" rel="stylesheet" />
<link href="${bootstrapp_css}" rel="stylesheet" />
<script src="${jquery}" ></script>
<script src="${bootstrapp_js}" ></script>
<body>
<h1 class="text-center">ABC CORPORATION</h1>
<sf:form method="POST" action ="/SpringBasics/redirect">
<table>
<tr>
<td>Login ID: <input type="text" name="userName" />
<br> Email: <sf:input type="email" path="email" />
<br> My Label: <sf:label id="lbl1" path="myLabel" />
</td>
</tr>
<tr>
<td>Password: <input type="number" name="extension" /></td>
</tr>
</table>
<input type="submit" value="Redirect Page" />
</sf:form>
</body>
</html>
To resolve it I created a properties class which is defined below
/**
*
* @author Zeeshan
*/
public class userInput {
protected String _email;
protected String _myLabel;
public String getMyLabel() {
return _myLabel;
}
public void setMyLabel(String _myLabel) {
this._myLabel = _myLabel;
}
public String getEmail() {
return _email;
}
public void setEmail(String _email) {
this._email = _email;
}
and change my JSP Code from
<sf:form method="POST" action ="/SpringBasics/redirect">
To
<sf:form method="POST" action ="/SpringBasics/redirect" modelAttribute="userInput" >
Also change my controller class parameter From
@RequestMapping(value = "/", method = GET)
public String aboutUs() {
return "aboutus";
}
To
@RequestMapping(value = "/", method = GET)
public String aboutUs(userInput obj) {
return "aboutus";
}
This resolve the above error message.
If suggested solution help you in solving your issue then please comment to increase its credibility.
Thanks.