Company と Automotive の 2 つのテーブルがあります。企業は多くの自動車を持つことができます。Automotive を適切に永続化できません。会社はドロップダウンからビュー ページで選択されます。
私のコントローラー
@RequestMapping("/")
public String view(ModelMap model) {
Map<String, String> companyList = new HashMap<String, String>();
List<Company> companies = companyService.listAllCompanies();
for (Company company : companies) {
companyList.put(String.valueOf(company.getId()), company.getName());
}
model.addAttribute("companies", companyList);
model.addAttribute("automotive", new Automotive());
return "automotive/index";
}
@RequestMapping("manage")
public String manage(@ModelAttribute Automotive automotive,
BindingResult result, ModelMap model) {
model.addAttribute("automotive", automotive);
Map<String, String> companyList = new HashMap<String, String>();
List<Company> companies = new ArrayList<Company>();
for (Company company : companies) {
companyList.put(String.valueOf(company.getId()), company.getName());
}
model.addAttribute("companies", companyList);
automotiveService.addAutomotive(automotive);
return "automotive/index";
}
私の見解
<form:form action="/Automotive/manage" modelAttribute="automotive">
Name : <form:input path="name" />
Description : <form:input path="description" />
Type : <form:input path="type" />
Company : <form:select path="company" items="${companies}" />
<input type="submit" />
</form:form>
Q1>論理的に予想されるように、会社IDは保存されません。これは、ここではIDであると見なされているためですが、実際には保存中に会社タイプのオブジェクトである必要があります。これをどのように解決すればよいでしょうか。DTO を使用する必要がありますか、それとも直接的な方法はありますか?
Q2> コントローラーで新しいマップを作成する代わりに、会社リストをビューに直接渡すことはできませんか?