java - 如何使用@GetMapping按id加载数据

标签 java database spring-mvc cuba-platform

你好,抱歉我的英语不好,但是你能帮我吗?我有两个表单(列表和编辑列表) 如何根据列表上的 id 显示编辑表单?我使用6.8版本和IDEA,也在Portal Module中工作。对于表单,我使用 Freemarker(Ftl)。

这是我的 POJO 类:

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;
}

用于添加和编辑的 Controller :

@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}") 时,我想返回基于 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";
} 

关于java - 如何使用@GetMapping按id加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58705284/

相关文章:

java - 如何在 swagger codegen 中生成构造函数?

java - Spring Saml FilterChainProxy 清除上下文 - null 身份验证

java - 如何在没有 setter 的情况下绑定(bind)请求参数?

java - 如果我可以在创建者类中拥有多个工厂方法,为什么我需要抽象工厂模式?

java - 如何通过子对象唯一值或值集访问 Gemfire 对象

mysql - 使用 SQL 查询获取 mysql 表校验和

java - 在 Android 中初始化表时出现问题

python - 如何在尝试将特定 Grakn 实例插入到 KG 之前检查它是否已经存在?

Java SpringMVC Autowiring BeanCreationException

java - Eclipse CDT中获取调用层级