【发布时间】:2013-08-24 12:01:09
【问题描述】:
在我们的应用程序中,我们需要在数据库中创建一个对象的条目,然后将其发送给用户以进行相同的更改。如下图-:
@RequestMapping(value = "/addCompany", method = RequestMethod.POST)
public ModelAndView addCompany(
@ModelAttribute("company-entity") Company company,
BindingResult result) {
CompanyService companyService = (CompanyService) applicationContext
.getBean("companyService");
companyService.saveVersionAsDraft(company, 1110);*/
return new ModelAndView("success");
}
//Delegate to addPage after making an entry in the database
@RequestMapping("/companyHome")
public ModelAndView showCompanyForm() {
System.out.println("CompanyController.showContacts()");
CompanyService companyService = (CompanyService) applicationContext
.getBean("companyService");
CommonService commonService = (CommonService) applicationContext.getBean("commonService");
Company company = (Company) companyService.addNew(new Company(), 1100);
ModelAndView modelAndView = new ModelAndView("company");
modelAndView.addObject("companyCategories",
companyService
.findAllCompanyCategories());
modelAndView.addObject("sectors", commonService.findAllSectors());
modelAndView.addObject("companyStatus",
companyService.findAllCompanyStatuses());
ModelAndView modelAndView = new ModelAndView("company");
modelAndView.addObject("company-entity",company);
return modelAndView;
}
现在在这个公司对象中,我们还传递了 Db 的主键,我们需要在 add Company() 中使用它。所以我们需要用表单中的对象返回这个主键。 有什么办法吗? 我们有 6 到 7 个此类条目,因此我们不能在表单中使用隐藏字段。
【问题讨论】:
-
我完全不明白你的问题。可以肯定的是,您还没有真正理解依赖注入的全部内容。您不应该调用 applicationContext.getBean() 从控制器获取服务:它应该由 Spring 注入。用一个具体的例子解释你想要达到的目标。
-
为什么你不能使用隐藏的表单域,而它们可以完美地解决你的问题?
-
您的
showCompanyForm也有缺陷,您正在构建 2 个 ModelAndView 对象。您忽略第一个,构建一个新的(仅添加公司)并返回它。现在基本上你所有的参考数据都没有了。
标签: spring spring-mvc