невозможно связать идентификатор с помощью @DeleteMapping в RestController, чтобы удалить элемент из списка - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь получить данные из этого списка, чтобы обработать запрос на удаление, используя Почтальон:

Я создал этот список:

@Service
public class SchoolService {

    private List<School> SchoolLists = new ArrayList<School>();

    public SchoolService() {
        System.out.println("Service School is created");

        SchoolLists.add(new School(1, "The white hands Group");

        SchoolLists.add(new School(2,"The Yellow Hands"));

И здесь я пытаюсь удалить элемент из списка по идентификатору:

public void deleteSchool(Integer id){
        SchoolLists.remove(id);

        throw new RuntimeException("School not found for given ID = " + id);
    }

Вот как я обрабатываю запрос на удаление в RestController:

@RestController
public class SchoolController {

@Autowired
private SchoolService schoolService;

@DeleteMapping("/school/{id}")
    public void deleteSchool(@PathVariable Integer id )
    {
        SchoolService.deleteSchool(id);
    }

Это ошибка, которую я получаю в почтальоне: enter описание изображения здесь

вот ошибка, которую я получил после удаления исключения:

введите описание изображения здесь

1 Ответ

0 голосов
/ 26 марта 2020

Вы можете попробовать с аннотацией @PostConstruct (см. официальная ссылка ). Переместить инициализацию списка из конструктора в метод init.

@Service
public class SchoolService {

    private List<School> SchoolLists = new CopyOnWriteArrayList<School>();

    @PostConstruct
    public init() {
        System.out.println("Service School is created");

        SchoolLists.add(new School(1, "The white hands Group");

        SchoolLists.add(new School(2,"The Yellow Hands"));

Использовать CopyOnWriteArrayList для гарантии надежной резьбы.

...