Tuesday, February 9, 2016

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'xxx' available as request attribute

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: &nbsp;&nbsp;<input type="text" name="userName" />
                       <br> Email: &nbsp;&nbsp;<sf:input type="email" path="email" />
                       <br> My Label: &nbsp;&nbsp;<sf:label id="lbl1" path="myLabel"   />
                         
                    </td>
                </tr>
                <tr>
                    
                    <td>Password:&nbsp;&nbsp;<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.


Docker Tutorial

 I have listed all the necessary commands of Docker below. In case if any is missing or if any improvement required, please share in comment...