如何解决如何访问同一类Java中另一个函数内的列表
我发了一个帖子并在我的 java 控制器层中获取映射。帖子映射从前端收集开始日期、结束日期和访客数量等数据。
在服务层内,第一个函数过滤可用的公寓。但是,我想制作一个可以访问可用公寓列表的 get 映射,以便可以在前端显示。我在服务层用第二个函数尝试了这个。不幸的是,此功能仅显示整个公寓列表。有谁知道我如何获得一个可以从第一个函数访问列表的函数,以便我可以显示过滤后的可用公寓?
公寓控制器层
@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,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 请求来 POST 包含一些搜索参数的对象。
您应该使用带有参数的 GET 来代替 POST 进行过滤。这样您就可以在 GET 请求中进行过滤,而无需“访问 POST”请求。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。