sách gpt4 ai đã đi

java - 在 Controller 中处理删除请求的正确方法是什么?

In lại 作者:太空宇宙 更新时间:2023-11-04 09:26:34 25 4
mua khóa gpt4 Nike

尝试从 Thymeleaf 模板文件中发出删除 http 请求

来自模板:

 
IngredientID
Name
Description








从我的 Controller :

@DeleteMapping("/ingredients/{ingredientId}")
public String deleteIngredient(@PathVariable Long ingredientId, @ModelAttribute("ingredient") Ingredient ingredient){
ingredientRepository.delete(ingredient);
return "redirect:../../";
}

带有保存按钮的表单模板:


method="post">















Ingredient Name:
Description:

在 Controller 中保存方法:


@RequestMapping(value = "/ingredient/new/save", method = RequestMethod.POST)
public String saveIngredient(@ModelAttribute("ingredient") Ingredient ingredient){
ingredientRepository.save(ingredient);
return "redirect:../../";
}

成分实体:

package com.donovanuy.mixmix.entities;

import java.util.*;

import javax.persistence.*;

@Entity
@Table(name = "ingredients_master")
public class Ingredient extends AuditModel{

@Column(name = "ingredient")
private String name;
@Column(name="description")
private String description;

@Id
@GeneratedValue
private long id;

// public Ingredient(String n, String d){
// this.setName(n);
// this.setDescription(d);
// }

// public Ingredient(int id, String n, String d){
// this.setId(id);
// this.setName(n);
// this.setDescription(d);
// }


@ManyToMany(mappedBy = "ingredients")
Set recipes;

@ManyToMany
Set tags;


// Setters
}

làm mới

现在一切都按预期进行,我将 DELETE 请求隐藏在模板文件中,并在我的存储库中创建了一个 deleteById 方法。

tờ giấy





Controller :

@DeleteMapping("/ingredients/ingredient/{ingredientId}")
public String deleteIngredient(@PathVariable Long ingredientId){
ingredientRepository.deleteById(ingredientId);
return "redirect:../";
}

存储库:

import org.springframework.data.jpa.repository.JpaRepository;


import com.donovanuy.mixmix.entities.Ingredient;
import java.util.List;


public interface IngredientRepository extends JpaRepository {
List findAllById(Long id);

public void deleteById(Long Id);
}

1 Câu trả lời

这里的主要问题是,只有 LẤYBƯU KIỆN 方法在 HTML 表单提交 ( details ) 中有效。您可以利用 Spring 的 HiddenHttpMethodFilter 来解决这个问题。 。完成后,您可以使用标记:





对于 Controller 部分,在存储库中添加一个 deleteById(...) 方法。那么 Controller 代码可以是:

@DeleteMapping("/ingredients/{ingredientId}")
public String deleteIngredient(@PathVariable Long ingredientId) {
ingredientRepository.deleteById(ingredientId);
return "redirect:../../";
}

关于java - 在 Controller 中处理删除请求的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57629800/

25 4 0
太空宇宙
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com