Hey James,
I forgot to mention that. I tried it as well. But my controller, expects a businessTermID as a request parameter as well. I differentiate between the create and modify screens based on this parameter. My controller is as below:
Code:
package com.icreate.dataconnect.web.controller.report;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
import org.springframework.web.servlet.view.RedirectView;
import com.icreate.dataconnect.dictionary.bo.DictionaryBO;
import com.icreate.dataconnect.domain.datadictionary.BusinessTerm;
import com.icreate.dataconnect.domain.datadictionary.BusinessTermImpl;
import com.icreate.dataconnect.domain.report.ReportField;
import com.icreate.dataconnect.domain.report.ReportFieldImpl;
import com.icreate.dataconnect.domain.report.ReportSectionImpl;
import com.icreate.dataconnect.report.bo.ReportBO;
public class SectionFieldFormController extends SimpleFormController{
private ReportBO reportBO;
private DictionaryBO dictionaryBO;
protected ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception {
ReportFieldImpl reportField= (ReportFieldImpl)command;
reportField.setSectionID(Integer.parseInt(request.getParameter("sectionID")));
reportBO.createReportField(reportField);
RedirectView redirectView;
Map map = new HashMap();
map.put("sectionID", reportField.getSectionID());
if(request.getParameter("bizTermID") == null){
redirectView = new RedirectView("listreportsectionfields.htm");
}else{
redirectView = new RedirectView("reportfielddetail.htm");
map.put("businessTermID", reportField.getBusinessTermID());
}
redirectView.setAttributesMap(map);
return new ModelAndView(redirectView);
}
@Override
protected Map referenceData(HttpServletRequest request) throws Exception {
Map map = new HashMap();
List businessTermsList = new ArrayList();
List businessTermNamesList = new ArrayList();
for(BusinessTerm businessTerm: dictionaryBO.getAllBusinessTerms()){
businessTermsList.add(((BusinessTermImpl)businessTerm).getBusinessTermID());
businessTermNamesList.add(((BusinessTermImpl)businessTerm).getBusinessTermName());
}
map.put("businessTerms", dictionaryBO.getAllBusinessTerms());
ReportSectionImpl section = (ReportSectionImpl)reportBO.getReportSectionDetail(Integer.parseInt(request.getParameter("sectionID")));
map.put("section",section);
map.put("report", reportBO.getReportDetails(section.getReportID()));
return map;
}
@Override
protected Object formBackingObject(HttpServletRequest request)
throws Exception {
ReportField reportField= null;
if(request.getParameter("bizTermID") != null){
reportField = reportBO.getReportFieldDetail(Integer.parseInt(request.getParameter("sectionID")),Integer.parseInt(request.getParameter("bizTermID")));
return reportField;
}
return super.formBackingObject(request);
}
public ReportBO getReportBO() {
return reportBO;
}
public void setReportBO(ReportBO reportBO) {
this.reportBO = reportBO;
}
public DictionaryBO getDictionaryBO() {
return dictionaryBO;
}
public void setDictionaryBO(DictionaryBO dictionaryBO) {
this.dictionaryBO = dictionaryBO;
}
}