リクエスト パラメータの「タイプ」に基づいて pojo クラスを設定する必要があります。だから私は次のようなコードを持っています
@ModelAttribute
public void getModelObject(HttpServletRequest request, ModelMap modelMap) {
String typeCombo = request.getParameter("type");
System.out.println("typeCombo: " + typeCombo);
if (typeCombo != null) {
if (condition) {
modelMap.addAttribute("modelObj", new ClassB()); //ClassB extends ClassA
} else if (another condition) {
modelMap.addAttribute("modelObj", new ClassC()); //ClassC extends ClassA
} else {
System.out.println("no type found");
}
} else {
System.out.println("typecombo null");
}
}
上記の方法を使用して、追加/更新に使用される正しいサブクラスを作成します。上記のものは、「POST」の場合、つまりレコードを作成するために正常に機能します。ただし、「PUT」の場合、request.getParameter("type") は常に null を返します。そのため、編集のために、正しいサブクラスを取得できません。
以下は私の投稿とプットリクエストのマッピングです:
@RequestMapping(value = "", method = RequestMethod.POST, headers = "Accept=*/*")
@ResponseBody
public String addCredentials(@ModelAttribute("modelObj") Credential credential,
ModelMap modelMap) {
//code
}
@RequestMapping(value = "/edit/{id}", method = RequestMethod.PUT, headers = "Accept=*/*")
@ResponseBody
public Credential editCredential(@ModelAttribute ("modelObj") Credential credential, @PathVariable long id, ModelMap model) {
//コード}
どんな助けでも大歓迎です。