在我们的应用程序中,我们要求我们需要在对象的数据库中创建条目,然后将其发送给用户以进行相同的更改。如下所示 - :
@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的主键,我们需要在添加Company()时使用它。所以我们需要使用表单中的对象返回此主键。 有没有办法这样做? 我们有6到7个这样的条目,所以我们不能在表单中使用隐藏字段。
答案 0 :(得分:0)
就像JB Nizet所说的那样,你似乎绝对不会使用Spring的核心:依赖注入。 而不是直接获取服务bean:
CompanyService companyService = (CompanyService) applicationContext
.getBean("companyService");
你应该让Spring在你的控制器中注入类似的内容:
@Autowired
private CompanyService companyService;
除此之外,关于你的问题,你有三个选择来保持id。第一个解决方案使用Spring提出的经典方法来编辑一些域对象(受RestFull方法的启发):
//Delegate to addPage after making an entry in the database
@RequestMapping("/company/{id}")
public ModelAndView showCompany(@PathVariable("id") Long id,Model model) {
使用此功能,您将始终在网址中包含ID,因此您将保留该网址。
如果您利用Spring的'form'标签,则可以使用第二个选项。您只需要创建一个表单:hidden field并给他path =“yourIdAttribute”
第三个是类似的,但你必须创建一个标准的输入类型=“隐藏”,然后在你的控制器中得到它,如下所示:
public ModelAndView showCompany(@RequestParam(value="name_of_your_field") Long id,...)
不要犹豫,询问您是否需要更多详细信息。