gpt4 book ai didi

java - SpringMVC + Hibernate - 模型属性和更新

转载 作者:行者123 更新时间:2023-11-30 07:58:19 25 4
gpt4 key购买 nike

我正在尝试更新用户表单中的一些持久对象。
我的 POJO 类:

public Class MyModel {
int primKey;
String value;
// getter setter
}

Controller 方法:

@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 属性作为模型并随后更新持久对象?

最佳答案

int primKey;更改为Integer PrimaryKey;。默认情况下,int 类变量被赋值为 0,但 Integer 保持为 null。

我猜您想自动生成primaryKey并保存新记录(insert)。为此,primaryKey 必须为 null

但是由于您在同一个 JSP 模板中执行更新和插入操作,因此您的 primaryKey 应该有一个隐藏的输入绑定(bind)。

但是如果您觉得primaryKey是敏感数据,您可以对primaryKey进行编码并将其保留为hiddenValue,然后将其发送回来,然后对其进行解码并获取实际值并使用它。

关于java - SpringMVC + Hibernate - 模型属性和更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32323977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com