我試圖更新用戶窗體中的一些持久對象。
我的POJO類:SpringMVC +休眠 - 模型屬性和更新
public Class MyModel {
int primKey;
String value;
// getter setter
}
控制器方法:
@RequestMapping(value="/update/{id}", method=RequestMethod.GET)
public String getEditView(@PathVariable int id, ModelMap model) {
MyModel mymodel = modelService.getModel(id);
model.addAttribute("mymodel", mymodel);
return "/edit";
}
@RequestMapping(value="/update", method=RequestMethod.POST)
public String updateModel(@ModelAttribute("mymodel") MyModel mymodel, HttpSession session) {
session.setAttribute("status", modelService.update(mymodel) ? "success" : "error");
return "redirect:/home";
}
而我的編輯形式:
<form:form modelAttribute="mymodel" role="form" method="post" action="/update">
<label>Enter new name:</label>
<form:input path="value"/>
<input type="submit" class="btn btn-default" value="Update" />
</form:form>
現在的問題是,當我的UpdateModel收到模型屬性 「爲MyModel」( )方法中,「value」字段被正確填充,但「primKey」字段被設置爲0,這導致Hibernate Session的更新方法失敗。將持久對象作爲「mymodel」傳遞,可以更容易地顯示更新表單,因爲所有映射值都是自動設置的,用戶可以輕鬆修改它們。那麼有什麼辦法來解決這個問題,或者我將不得不傳遞新的MyModel屬性作爲模型並在之後更新持久對象?
您確定,當您加載(GET)更新表單並提交(POST)表單時,您的'value'字段已填充? –
是的。但看來我正在獲得全新的對象。 – user2578525