簡體   English   中英

如何在同一個 class Java 中訪問另一個 function 中的列表

[英]How to access list inside another function in the same class Java

我發了一個帖子並在我的 java controller 層中獲取映射。 后映射從前端收集數據,例如開始日期、結束日期和客人數量。

在服務層內部,第一個 function 過濾可用的公寓。 但是,我想制作一個可以訪問可用公寓列表的獲取映射,以便可以在前端顯示。 我在服務層用第二個 function 嘗試了這個。 不幸的是,這個 function 只顯示了整個公寓列表。 有誰知道我如何獲得可以從第一個 function 訪問列表的 function 以便我可以顯示過濾后的可用公寓?

公寓Controller層

 @PostMapping(value = "api/availableapartments")
    public List<Apartment> getAvailableApartments(@RequestBody String request)throws JSONException, ParseException {
        JSONObject jsonObject = new JSONObject(request);
        DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Date startDate = format.parse(String.valueOf(jsonObject.getString("startDate")));
        Date endDate = format.parse(String.valueOf(jsonObject.getString("endDate")));
        Integer numberOfBeds =  Integer.parseInt(String.valueOf(jsonObject.getString("numberOfBeds")));
        return apartmentService.getAvailableApartments(numberOfBeds, startDate, endDate);
    }

    @GetMapping(value = "api/availableapartments")
    public List<Apartment> getAvailableApartments(){
        return apartmentService.getAllAvailableApartments();
    }


公寓服務層

public class ApartmentService  {

 public List<Apartment> getAvailableApartments(Integer requestedBeds, Date startDate, Date endDate){

        List<Apartment> allApartments = apartmentRepository.findAll();

        List<Apartment> availableApartments = new ArrayList<>();
            //going through all apartments
            for(Apartment apartment : allApartments){


                if(apartment.getAvailableBeds() >= requestedBeds){
                    if(reservationService.checkAvailability(apartment, startDate, endDate)){
                        availableApartments.add(apartment);
                    }

                }

            }
            return availableApartments;
    }

    public List<Apartment> getAllAvailableApartments(){
        List<Apartment> allApartments = apartmentRepository.findAll();


        List<Apartment> allAvailableApartments = new ArrayList<>();

        for(Apartment apartments : allApartments){
            System.out.println(apartments.getApartmentId());
            allAvailableApartments.add(apartments);


        }

        return allAvailableApartments;

    }
}

```

不確定我是否完全理解了這個問題,但在這種情況下,最好不要使用 POST 請求來發布包含一些搜索參數的 object。

您應該使用帶有參數的 GET 而不是 POST 進行過濾。 這樣您就可以在 GET 請求中進行過濾,而無需“訪問 POST”請求。

看看這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM