Neither BindingResult nor the regular target for the bean name, available as an attr request




Hi experts, I have this controller code that throws the above error. It worked until yesterday, I do not know what a colleague on this code did, and today I see an error:

Neither the BindingResult nor the regular target for the bean name 'sideForm', available as a request attribute

Could you suggest me where to look for such an error. Can I make a mistake in declaring a POST or GET method or returning something wrong?

Your help is much appreciated :)

package com.att.analytics.ui; import java.util.Arrays; import java.util.Collection; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import com.si.myworld.business.AdminChart; import com.si.myworld.business.Chart; import com.si.myworld.dao.AdminChartSummaryData; import com.si.myworld.dao.BulletinData; import com.si.myworld.dao.ChartData; @RequestMapping("/index.html") @Controller public class IndexController { private static final Logger log = Logger.getLogger(IndexController.class); /** * Called to load the page initially (GET request) * * @param model * @return */ @RequestMapping(method = RequestMethod.GET) public String getCharts(ModelMap model) { Chart chart = new Chart(); chart.setTimeline("Monthly"); chart.setStartDt("mm/dd/yyyy"); chart.setEndDt("mm/dd/yyyy"); AdminChartSummaryData acsd = new AdminChartSummaryData(); List<AdminChart> list = acsd.getLandingChartDataList(); if (list.size() == 4) { Chart chart1 = new Chart(list.get(0)); Chart chart2 = new Chart(list.get(1)); Chart chart3 = new Chart(list.get(2)); Chart chart4 = new Chart(list.get(3)); model.put("chart1", chart1); model.put("chart2", chart2); model.put("chart3", chart3); model.put("chart4", chart4); log.info("chart 1>>>>" + chart1); ChartData cd = new ChartData(); String chartOneDatasource = cd.fetchChartDatasourceName(chart1 .getChartSubgroup()); String chartTwoDatasource = cd.fetchChartDatasourceName(chart2 .getChartSubgroup()); String chartThreeDatasource = cd.fetchChartDatasourceName(chart3 .getChartSubgroup()); String chartFourDatasource = cd.fetchChartDatasourceName(chart4 .getChartSubgroup()); String breadcrumbOne = chart1.getChartGroup() + ">>" + chart1.getChartSubgroup(); String breadcrumbTwo = chart2.getChartGroup() + ">>" + chart2.getChartSubgroup(); String breadcrumbThree = chart3.getChartGroup() + ">>" + chart3.getChartSubgroup(); String breadcrumbFour = chart4.getChartGroup() + ">>" + chart4.getChartSubgroup(); BulletinData bd = new BulletinData(); String bulletin = bd.getBulletinData(); model.put("sideForm", chart); model.put("chartOneDatasource", chartOneDatasource); model.put("chartTwoDatasource", chartTwoDatasource); model.put("chartThreeDatasource", chartThreeDatasource); model.put("chartFourDatasource", chartFourDatasource); model.put("breadcrumbOne", breadcrumbOne); model.put("breadcrumbTwo", breadcrumbTwo); model.put("breadcrumbThree", breadcrumbThree); model.put("breadcrumbFour", breadcrumbFour); model.put("bulletin", bulletin); } return "land"; } @RequestMapping(method = RequestMethod.POST) public String loadCharts(HttpServletRequest request, ModelMap model, @ModelAttribute("sideForm") Chart chart) { String from_date = request.getParameter("startDt"); String to_date = request.getParameter("endDt"); chart.setStartDt(from_date); chart.setEndDt(to_date); ChartData cd = new ChartData(); BulletinData bd = new BulletinData(); String bulletin = bd.getBulletinData(); AdminChartSummaryData acsd = new AdminChartSummaryData(); List<AdminChart> list = acsd.getLandingChartDataList(); if (list.size() == 4) { Chart chart1 = new Chart(list.get(0)); Chart chart2 = new Chart(list.get(1)); Chart chart3 = new Chart(list.get(2)); Chart chart4 = new Chart(list.get(3)); model.put("chart1", chart1); model.put("chart2", chart2); model.put("chart3", chart3); model.put("chart4", chart4); String chartOneDatasource = cd.fetchChartDatasourceName(chart1 .getChartSubgroup()); String chartTwoDatasource = cd.fetchChartDatasourceName(chart2 .getChartSubgroup()); String chartThreeDatasource = cd.fetchChartDatasourceName(chart3 .getChartSubgroup()); String chartFourDatasource = cd.fetchChartDatasourceName(chart4 .getChartSubgroup()); model.put("chartOneDatasource", chartOneDatasource); model.put("chartTwoDatasource", chartTwoDatasource); model.put("chartThreeDatasource", chartThreeDatasource); model.put("chartFourDatasource", chartFourDatasource); String breadcrumbOne = chart1.getChartGroup() + ">>" + chart1.getChartSubgroup(); String breadcrumbTwo = chart2.getChartGroup() + ">>" + chart2.getChartSubgroup(); String breadcrumbThree = chart3.getChartGroup() + ">>" + chart3.getChartSubgroup(); String breadcrumbFour = chart4.getChartGroup() + ">>" + chart4.getChartSubgroup(); model.put("breadcrumbOne", breadcrumbOne); model.put("breadcrumbTwo", breadcrumbTwo); model.put("breadcrumbThree", breadcrumbThree); model.put("breadcrumbFour", breadcrumbFour); } return "land"; } @ModelAttribute("timeline") public Collection<String> populateTimeline() { return Arrays.asList("Daily", "Weekly", "Monthly", "Quarterly", "Annually", "12_Month_Rolling"); } } 

This page gets the values ​​from the form shown below:

 <form:form commandName="sideForm"> <div style="font-weight:bold; color:#000">Timeline</div> <div style="margin:0 0 5px 0;"><form:select path="timeline" items="${timeline}" id="tm"/></div> <div class="tofrom">From:</div> <form:input path="startDt" id="from_date" size="7" maxlength="10" /> <div class="tofrom">To:</div> <form:input path="endDt" id="to_date" size="7" maxlength="12" /> <input type="submit" value="Update Chart" /> </form:form> 
+30
spring spring-mvc
Jul 01 '09 at 15:54
source share
6 answers

Make sure that Spring says modelAttribute="<Model Name" .

Example:

 @Controller @RequestMapping("/greeting.html") public class GreetingController { @ModelAttribute("greeting") public Greeting getGreetingObject() { return new Greeting(); } /** * GET * * */ @RequestMapping(method = RequestMethod.GET) public String handleRequest() { return "greeting"; } /** * POST * * */ @RequestMapping(method = RequestMethod.POST) public ModelAndView processSubmit(@ModelAttribute("greeting") Greeting greeting, BindingResult result){ ModelAndView mv = new ModelAndView(); mv.addObject("greeting", greeting); return mv; } } 

In your JSP:

 <form:form modelAttribute="greeting" method="POST" action="greeting.html"> 
+35
Sep 17 '09 at 23:20
source share

Make sure you declare a bean associated with the form in the GET method of the associated controller, and also add it to the model.addAttribute("uploadItem", uploadItem); model model.addAttribute("uploadItem", uploadItem); which contains the annotation @RequestMapping(method = RequestMethod.GET) .

For example, UploadItem.java is associated with myform.jsp, and the controller is SecureAreaController.java

myform.jsp contains

 <form:form action="/securedArea" commandName="uploadItem" enctype="multipart/form-data"></form:form> 

MyFormController.java

 @RequestMapping("/securedArea") @Controller public class SecureAreaController { @RequestMapping(method = RequestMethod.GET) public String showForm(Model model) { UploadItem uploadItem = new UploadItem(); // declareing model.addAttribute("uploadItem", uploadItem); // adding in model return "securedArea/upload"; } } 

As you can see, I declare UploadItem.java in the controller's GET method.

+23
Mar 14 '11 at 15:33
source share

Try adding the BindingResult parameter to methods annotated with @RequestMapping , which have annotated @ModelAttribute parameters. After each parameter, @ModelAttribute Spring looks for BindingResult in the next parameter position (order is important).

So try changing:

 @RequestMapping(method = RequestMethod.POST) public String loadCharts(HttpServletRequest request, ModelMap model, @ModelAttribute("sideForm") Chart chart) ... 

To:

 @RequestMapping(method = RequestMethod.POST) public String loadCharts(@ModelAttribute("sideForm") Chart chart, BindingResult bindingResult, HttpServletRequest request, ModelMap model) ... 
+6
Aug 10 '09 at 2:11
source share

I worked on the same problem, and I'm sure I found out what exactly is the reason.

Neither the BindingResult nor the regular target for the bean name 'command', available as a request attribute

If the value of the successView property (jsp page name) matches the name of your input page, then the second value of the ModelAndView constructor must match the name of the command on the input page.

eg.

index.jsp

 <html> <body> <table> <tr><td><a href="Login.html">Login</a></td></tr> </table> </body> </html> 

dispatcher-servlet.xml

 <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix"> <value>/WEB-INF/jsp/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="urlMap"> <map> <entry key="/Login.html"> <ref bean="userController"/> </entry> </map> </property> </bean> <bean id="userController" class="controller.AddCountryFormController"> <property name="commandName"><value>country</value></property> <property name="commandClass"><value>controller.Country</value></property> <property name="formView"><value>countryForm</value></property> <property name="successView"><value>countryForm</value></property> </bean> 

AddCountryFormController.java

 package controller; import javax.servlet.http.*; import org.springframework.web.servlet.ModelAndView; import org.springframework.validation.BindException; import org.springframework.web.servlet.mvc.SimpleFormController; public class AddCountryFormController extends SimpleFormController { public AddCountryFormController(){ setCommandName("Country.class"); } protected ModelAndView onSubmit(HttpServletRequest request,HttpServletResponse response,Object command,BindException errors){ Country country=(Country)command; System.out.println("calling onsubmit method !!!!!"); return new ModelAndView(getSuccessView(),"country",country); } } 

Country.java

 package controller; public class Country { private String countryName; public void setCountryName(String value){ countryName=value; } public String getCountryName(){ return countryName; } } 

countryForm.jsp

 <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <html> <body> <form:form commandName="country" method="POST" > <table> <tr><td><form:input path="countryName"/></td></tr> <tr><td><input type="submit" value="Save"/></td></tr> </table> </form:form> </body> <html> 

Input page commandName="country" ModelAndView Constructor as return new ModelAndView(getSuccessView(),"country",country); Input tool commandName==ModeAndView(,"commandName",)

+4
Jul 27 '12 at 7:06
source share

We ran into the same problem and changed commandname="" to modelAttribute="" on the jsp page to solve this problem.

0
Jul 15 '16 at 5:51
source share

I also ran into this problem. Here is my solution:

The following is an error when working with a small Spring Application: -

 *HTTP Status 500 - -------------------------------------------------------------------------------- type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/employe.jsp at line 12 9: <form:form method="POST" commandName="command" action="/SpringWeb/addEmploye"> 10: <table> 11: <tr> 12: <td><form:label path="name">Name</form:label></td> 13: <td><form:input path="name" /></td> 14: </tr> 15: <tr> Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:465) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1060) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) root cause java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'command' available as request attribute org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:141) org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:174) org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:194) org.springframework.web.servlet.tags.form.LabelTag.autogenerateFor(LabelTag.java:129) org.springframework.web.servlet.tags.form.LabelTag.resolveFor(LabelTag.java:119) org.springframework.web.servlet.tags.form.LabelTag.writeTagContent(LabelTag.java:89) org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102) org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79) org.apache.jsp.WEB_002dINF.jsp.employe_jsp._jspx_meth_form_005flabel_005f0(employe_jsp.java:185) org.apache.jsp.WEB_002dINF.jsp.employe_jsp._jspx_meth_form_005fform_005f0(employe_jsp.java:120) org.apache.jsp.WEB_002dINF.jsp.employe_jsp._jspService(employe_jsp.java:80) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1060) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) note The full stack trace of the root cause is available in the Apache Tomcat/7.0.26 logs.* 

To solve this problem, you need to do the following in the controller class: -

  • Change the import package from " import org.springframework.web.portlet.ModelAndView; " to " import org.springframework.web.servlet.ModelAndView; " ...
  • Recompile and run the code ... the problem should be resolved.
-one
Jun 28 '14 at 11:18
source share



All Articles