我在java控制器层中做了一个post和getMap。postMap从前端收集数据,例如开始日期、结束日期和访客数。
在服务层中,第一个函数过滤可用的公寓。但是,我想做一个getMap,它可以访问可用公寓的列表,这样就可以显示在前端。我在服务层用第二个函数尝试了这个。不幸的是,这个函数只显示整个公寓列表。有人知道我如何得到一个函数,可以从第一个函数访问列表,这样我就可以显示过滤后的可用公寓吗?
公寓控制器层
@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;
}
}
1条答案
按热度按时间xzabzqsa1#
我不确定我是否完全理解了这个问题,但是在这个场景中,最好不要仅仅使用post请求来发布包含一些搜索参数的对象。
应该使用带有参数的get来进行过滤,而不是post。这样,您就可以在get请求中进行过滤,而不需要“访问post”请求。
看看这里