gpt4 book ai didi

java - Spring @ModelAttribute 接口(interface)

转载 作者:行者123 更新时间:2023-11-30 06:51:37 28 4
gpt4 key购买 nike

如何在下面的场景中将接口(interface)作为 ModelAttribute

@GetMapping("/{id}")
public String get(@PathVariable String id, ModelMap map) {
map.put("entity", service.getById(id));
return "view";
}

@PostMapping("/{id}")
public String update(@ModelAttribute("entity") Entity entity) {
service.store(entity);
return "view";
}

上面的代码片段给出了以下错误

BeanInstantiationException: Failed to instantiate [foo.Entity]: Specified class is an interface

我不希望 spring 为我实例化 entity,我想使用 map.put("entity", . .).

最佳答案

正如评论中指出的那样,Entity 实例在 getpost 请求之间不存在。

解决方案是这样的

@ModelAttribute("entity")
public Entity entity(@PathVariable String id) {
return service.getById(id);
}

@GetMapping("/{id}")
public String get() {
return "view";
}

@PostMapping("/{id})
public String update(@ModelAttribute("entity") Entity entity) {
service.store(entity);
return "view";
}

这里发生的是 update 中的 Entity 绑定(bind)到从带注释的 @ModelAttribute 创建的 Entity 实体 方法。然后 Spring 将表单值应用于现有对象。

关于java - Spring @ModelAttribute 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40042894/

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