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); @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>