如何使用@GetMapping 通过 id 加载数据
How to load data by id with @GetMapping
你好对不起我的英语,但你能帮我吗?我有两种形式(列表和编辑列表) 如何根据列表中的 id 显示编辑表单?我使用 6.8 版和 IDEA,也在 Portal 模块中工作。对于我使用 Freemarker(Ftl).
的表格
这是我的 POJO class:
private String _csrf;
@NotBlank
private String id;
@NotBlank
private String firstName;
@NotBlank
private String lastName;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String get_csrf() {
return _csrf;
}
public void set_csrf(String _csrf) {
this._csrf = _csrf;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
用于添加和编辑的控制器:
@GetMapping("/add")
public String add(Model model) {
John john = new John();
model.addAttribute("john", john);
return "add";
}
@PostMapping("/add")
public String save(@ModelAttribute("john") John john) {
String firstName = john.getFirstName();
String lastName = john.getLastName();
John newJohn = new John(firstName, lastName);
John standardEntity = metadata.create(John.class);
standardEntity.setFirstName(newJohn.getFirstName());
standardEntity.setLastName(newJohn.getLastName());
dataManager.commit(standardEntity);
return "redirect:/allPersons";
}
@RequestMapping(value = "/allPersons", method = RequestMethod.GET)
public String getPersons(Model model) {
List<John> johns = dataManager.loadList(LoadContext.create(John.class)
.setQuery(LoadContext.createQuery("select u from test6$John u")));
List<JohnPojo> johnPojos = johns.stream().map(e -> {
JohnPojo johnPojo = new JohnPojo();
johnPojo.setFirstName(e.getFirstName());
johnPojo.setLastName(e.getLastName());
johnPojo.setId(e.getId().toString());
return johnPojo;
}).collect(Collectors.toList());
model.addAttribute("users", johnPojos);
return "list";
}
当我转到 Url: @GetMapping("/update/{id}") 时,我想 return 基于 id 和数据的编辑表单并保存。
你能告诉我我应该写哪个 POST 和 GET 方法来达到预期的结果吗?我真的很挣扎,因为缺乏针对此特定任务的文档。谢谢!
不确定您卡在哪里,但您似乎需要使用 dataManager 来加载实体。类似于:
@GetMapping("/update/{id}")
public String getForUpdate(@PathVariable String id, Model model) {
John john = dataManager. load(id);
model.addAttribute("john", john);
return "update";
}
你好对不起我的英语,但你能帮我吗?我有两种形式(列表和编辑列表) 如何根据列表中的 id 显示编辑表单?我使用 6.8 版和 IDEA,也在 Portal 模块中工作。对于我使用 Freemarker(Ftl).
的表格这是我的 POJO class:
private String _csrf;
@NotBlank
private String id;
@NotBlank
private String firstName;
@NotBlank
private String lastName;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String get_csrf() {
return _csrf;
}
public void set_csrf(String _csrf) {
this._csrf = _csrf;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
用于添加和编辑的控制器:
@GetMapping("/add")
public String add(Model model) {
John john = new John();
model.addAttribute("john", john);
return "add";
}
@PostMapping("/add")
public String save(@ModelAttribute("john") John john) {
String firstName = john.getFirstName();
String lastName = john.getLastName();
John newJohn = new John(firstName, lastName);
John standardEntity = metadata.create(John.class);
standardEntity.setFirstName(newJohn.getFirstName());
standardEntity.setLastName(newJohn.getLastName());
dataManager.commit(standardEntity);
return "redirect:/allPersons";
}
@RequestMapping(value = "/allPersons", method = RequestMethod.GET)
public String getPersons(Model model) {
List<John> johns = dataManager.loadList(LoadContext.create(John.class)
.setQuery(LoadContext.createQuery("select u from test6$John u")));
List<JohnPojo> johnPojos = johns.stream().map(e -> {
JohnPojo johnPojo = new JohnPojo();
johnPojo.setFirstName(e.getFirstName());
johnPojo.setLastName(e.getLastName());
johnPojo.setId(e.getId().toString());
return johnPojo;
}).collect(Collectors.toList());
model.addAttribute("users", johnPojos);
return "list";
}
当我转到 Url: @GetMapping("/update/{id}") 时,我想 return 基于 id 和数据的编辑表单并保存。 你能告诉我我应该写哪个 POST 和 GET 方法来达到预期的结果吗?我真的很挣扎,因为缺乏针对此特定任务的文档。谢谢!
不确定您卡在哪里,但您似乎需要使用 dataManager 来加载实体。类似于:
@GetMapping("/update/{id}")
public String getForUpdate(@PathVariable String id, Model model) {
John john = dataManager. load(id);
model.addAttribute("john", john);
return "update";
}