While trying to use Spring MVC form Tags, I come across following exception
To
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
package springbasics;
/**
*
* @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.
Thanks.