0

私たちのアプリケーションでは、オブジェクトのデータベースにエントリを作成し、それをユーザーに送信して同じ変更を加える必要があるという要件があります。以下に示すように -:

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

この会社オブジェクトでは、 add Company() で使用する必要がある Db の主キーも渡しています。そのため、フォームからオブジェクトとともにこの主キーを返す必要があります。そうする方法はありますか?この種のエントリが 6 ~ 7 個あるため、フォームで隠しフィールドを使用することはできません。

4

1 に答える 1

0

JB Nizet が言ったように、Spring のコアであるDependency Injectionをまったく利用していないようです。サービス Bean の直接取得を使用する代わりに:

CompanyService companyService = (CompanyService) applicationContext
        .getBean("companyService"); 

コントローラーにそのようなものをSpringに注入させる必要があります:

@Autowired
private CompanyService companyService;

それに加えて、あなたの質問については、ID を保持するための 3 つのオプションがあります。最初の解決策は、Spring によって提案された古典的な方法を使用して、いくつかのドメイン オブジェクトを編集します (RestFull アプローチに触発されました)。

//Delegate to addPage after making an entry in the database
@RequestMapping("/company/{id}")
public ModelAndView showCompany(@PathVariable("id") Long id,Model model) {

これを使用すると、常に URL に ID が含まれるため、それを保持できます。

2 番目のオプションは、Spring の「フォーム」タグを利用する場合に使用できます。form:hidden フィールドを作成し、path="yourIdAttribute" を指定するだけです。

3 つ目は似ていますが、標準入力の type="hidden" を作成してから、次のような方法でコントローラーに取得する必要があります。

public ModelAndView showCompany(@RequestParam(value="name_of_your_field") Long id,...)

詳細が必要な場合は、遠慮なくお尋ねください。

于 2013-08-24T17:17:56.943 に答える