我试图更新用户窗体中的一些持久对象。
我的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