【问题标题】:How to access list inside another function in the same class Java如何访问同一类Java中另一个函数内的列表
【发布时间】:2020-12-24 17:01:33
【问题描述】:

我发了一个帖子并在我的 java 控制器层中获取映射。后映射从前端收集开始日期、结束日期和客人数量等数据。

在服务层内,第一个函数过滤可用的公寓。但是,我想制作一个可以访问可用公寓列表的获取映射,以便可以将其显示在前端。我在第二个功能的服务层尝试了这个。不幸的是,此功能仅显示整个公寓列表。有谁知道我如何获得一个可以从第一个函数访问列表的函数,以便我可以显示过滤后的可用公寓?

公寓控制器层

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

    }
}

```

【问题讨论】:

    标签: java list post get rest


    【解决方案1】:

    不确定我是否完全理解了这个问题,但在这种情况下,最好不要只使用 POST 请求来 POST 包含一些搜索参数的对象。

    您应该使用带有参数的 GET 来代替 POST 进行过滤。这样您就可以在 GET 请求中进行过滤,而无需“访问 POST”请求。

    Have a look here

    【讨论】:

    • 但是,如果我想将数据发送到后端,例如开始日期和结束日期,我需要一个发布请求,对吗?我的主要目标是使用 post 请求发送数据,并使用 get 请求将数据发送到前端。还是有其他解决方案?
    • 日期和床位数并不是真正的数据,它们是您搜索查询的过滤器,对吧?所以你可以做 GET availableapartments?beds=2&from=2020-12-01&to=2020-12-20。 REST 并不意味着具有任何状态,但当然您可以将其建模为搜索参数数据是一种资源,因此您发布该数据并将其与用户 ID 一起写入数据库。然后,您的 GET 将在返回搜索结果之前查看数据库条目。
    猜你喜欢
    • 2014-09-11
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 2014-10-28
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多