0

I am using spring mvc 5 with jsp and this problem does not seem to go away. have wasted so much time but may be a new set of eyes can see the issue.

Error:

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

org.apache.jasper.JasperException: An exception occurred processing [dashboard.jsp] at line [131]

128: <div class="sidenav">
129:     <form:form method="POST" action="dashboardUpdate" modelAttribute="selectedModelField">
130:         
131:         <div class="mfdiv" >Agent<form:radiobutton disabled="true" path="model" value="Agent"/>  </div>

HelloController.java

    @RequestMapping("/login")
    public String login(ModelMap model)
    {
        model.put("selectpbx",new Selectpbx());
        return "dashboard";
            
    }   

    @RequestMapping("/dashboard")
    public String dashboard(@Valid @ModelAttribute("selectpbx")Selectpbx selectpbx, 
    BindingResult result, ModelMap model)
    {
        model.put("selectedModelField", new SelectedModelField()); 
        log.info("Selected PBX: "+selectpbx.getPbx());
        return "dashboard"; 
    }

    @RequestMapping("/dashboardUpdate")
    public String dashboardUpdate(@Valid @ModelAttribute("selectedModelField")SelectedModelField selectedModelField, 
    BindingResult result, ModelMap model)
    {  
        if (result.hasErrors()) {
            return "error";
        }

        log.info("selected Model: "+selectedModelField.getModel());
        if("CTILink".equals(selectedModelField.getModel()))
        {
            log.info("Condition for CTILink passed.");
            citilinkaaray = ctiLinkClient.getCTILink();
            model.addAttribute("list", citilinkaaray);
        }
        else if("MediaGateway".equals(selectedModelField.getModel()))
        {
            log.info("Condition for MediaGateway passed.");
            mgList = ctiLinkClient.getMediaGateway();
            model.addAttribute("list", mgList);
        }
        else if("Station".equals(selectedModelField.getModel()))
        {
            log.info("Condition for Station passed.");
            stList = ctiLinkClient.getStation();
            model.addAttribute("list", stList);
        }
 
        
        return "dashboard"; 
    }
}

login.jsp form

    <form:form method="POST" action="dashboard" modelAttribute="selectpbx">
    <div class="horizontalACDDiv">

            <div class="card3 disabled" id="card5">
                <label>ACD1</label><form:radiobutton disabled="false" path="pbx" value="ACD1"/>
            </div>

dashboard.jsp form

    <form:form method="POST" action="dashboardUpdate" modelAttribute="selectedModelField">
        
        <div class="mfdiv" >Agent<form:radiobutton disabled="true" path="model" value="Agent"/>  </div>

SelectedModelField.java

public class SelectedModelField {  
  
    private String model;   
    
    public String getModel() {  
        return model;  
    }  
    public void setModel(String model) {  
        this.model = model;  
    }     
}

Selectpbx.java

public class Selectpbx {  
  
    private String pbx;   
 
    public String getPbx() {  
        return pbx;  
    }  
    public void setPbx(String pbx) {  
        this.pbx = pbx;  
    }     
} 
dbreaux
  • 4,857
  • 1
  • 22
  • 62
Noddy
  • 33
  • 1
  • 1
  • 9
  • I think it might be this, that you need to explicitly create the `SelectedModelField` object instance before referencing it: https://stackoverflow.com/a/8785223/796761 – dbreaux Jun 17 '21 at 20:37

0 Answers0