Сопоставление удаления не работает из пользовательского интерфейса, но работает через PostmanJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Сопоставление удаления не работает из пользовательского интерфейса, но работает через Postman

Сообщение Anonymous »

Код: Выделить всё

export default function Cart()
{  const username=localStorage.getItem("username");
const [data,setdata]=useState([]);
const [amount,setAmount]=useState(0);
const items=data.map((item)=>{
return(

{item.name}
{item.price}₹
{item.quantity}
handlepayment(item.price,item.name,item.username)}>Make payment

)
})

function handlepayment(price,name,username)
{
console.log(`price=${price}, name=${name} , username=${username}`)
if(amount
      {
alert("insufficient balance");
return;
}
const url=`http://localhost:8080/cartproducts/${username}/${name}}`;
fetch(url, { method: 'DELETE' })
.then((response) => {
if (!response.ok) {
alert("something is wrong");
throw new Error("Invalid credentials");
}
return response.json();
})
.then((data) => {console.log(data);
updateamount(price);
})
.catch(error => console.error(error));

}
Выше приведен мой код реагирования, поэтому простое нажатие кнопки внесения платежа принимает три значения в качестве аргументов, а в методе удаления в URL-адресе будут показаны имя пользователя и имя. Игнорируйте операторы console.log, которые были написаны для отладки, просто чтобы узнать, переданы ли правильные значения или нет.
Ниже контроллер игнорирует операторы печати, предназначенные для отладки.

Код: Выделить всё

@RestController
@RequestMapping("/")
@CrossOrigin

public class FoodItemController {
@Autowired
private FoodItemService service;
@DeleteMapping("/cartproducts/{username}/{name}")
public ResponseEntity deletefooditem(@PathVariable String username, @PathVariable String name)
{
System.out.println("inside deletefooditem"+"username="+username+" "+"name="+name);

Map response=new HashMap();
if(service.deletefooditem(username,name))
{
response.put("successfully", "deleted");
return new ResponseEntity(response,HttpStatus.OK);
}
else {
response.put("something is wrong", "not deleted");
return new ResponseEntity(response,HttpStatus.BAD_REQUEST);
}
}
}
Ниже находится уровень обслуживания

Код: Выделить всё

public boolean deletefooditem(String username,String name)
{
System.out.println("inside service"+"username="+username+" "+"name="+name);
FoodItems masteritem=repo.findByUsernameAndName(username,name);
if(masteritem!=null)
{
repo.delete(masteritem);
return true;
}
return false;
}
Ниже находится слой репозитория

Код: Выделить всё

public interface FoodItemrepo extends JpaRepository {
List findAllByUsername(String username);
FoodItems findByUsernameAndName(String username,String name);
}
Ниже приведен класс модели

Код: Выделить всё

@Entity
public class FoodItems {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int Id;
private String name;
private String username;
private int price;
private int quantity;
Я применил все необходимые аннотации, которые я здесь не упомянул, например @Autowired, @RestController, @Service, @Repository.
Проблема в том, что поступающий на уровень обслуживания. Невозможно найти данные из базы данных с помощью упомянутого метода findBy. Но при использовании почтальона я не столкнулся с какой-либо проблемой, например, с удалением данных. Если я использую findByUsernameAndName в другом элементе имени метода, который я упомянул ниже, он работает так, как ожидалось, когда я нажимаю из пользовательского интерфейса.

Код: Выделить всё

@Transactional
public void additem(FoodItems item)
{
String username=item.getUsername();
String name=item.getName();
FoodItems fooditem=repo.findByUsernameAndName(username,name);
System.out.println(fooditem);
if(fooditem!=null)
{

item.setQuantity(item.getQuantity()+fooditem.getQuantity());
item.setPrice(item.getQuantity()*item.getPrice());
repo.save(item);
repo.delete(fooditem);
}
repo.save(item);
}
Здесь я застрял, поскольку отправленные поля имени пользователя и имени были правильными, и я также проверил их на уровне обслуживания. Но объект, который будет создан, всегда имеет значение null. Может кто-нибудь помочь мне с этим.

Подробнее здесь: https://stackoverflow.com/questions/790 ... gh-postman
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»